From f1229c5401494b7d809817fa43e4d25076451341 Mon Sep 17 00:00:00 2001 From: talamh Date: Sun, 2 May 2021 01:58:40 +0000 Subject: [PATCH 001/271] Added spawn egg for killer rabbitt --- .../mobs_mc_spawn_icon_rabbit_caerbannog.png | Bin 0 -> 1897 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_rabbit_caerbannog.png diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_rabbit_caerbannog.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_spawn_icon_rabbit_caerbannog.png new file mode 100644 index 0000000000000000000000000000000000000000..4244a83c6f0a93ff1f7d65180fd6d56b43e98af3 GIT binary patch literal 1897 zcmV-v2bTDWP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1YulI182{O1&N1WN)Wj>8%;H<;s3VuS0|@?KYW zmmM}(W=UmAvR(i0-{Jnj!5qBvK`o{j4;()E#2Fnst|Om!I{bNG56AAjv%C8R!z5_s zdbGIg9d^ceUiP}y$*_lqg;HNH%KI02EyT7q*gLL`gsu&awXn-;A>p;Nzn;tG))ABG zqYHJ7AM5=|11>jjUX){qq#k$AhiXjd8y{Z5Tbn>d&;9R>K0doWl!1x6kQ}(%L@4tj z$!NoQXN;M)EV3+%3aG{IQ1sL0_4V-zx!cf}BD1U*2UO;c{F~ZCB17#+Av|IV<8+T;Z@u_B<0# zLrPT0*$`v}XQf0883%c4lxa{u+e#G>J$F{L%oXBR2ctoZ#1(Rq_<7P`l_X6JVpoKN zz{)okI=4;dc9jepH!_FlAS_0h@>i$(&Y&@7LJ=Kya|K*HBO55DazySR41*#x7OCMR zc%L7SsjEQ2aMEmWFdt>E0QpOxx8RafXu-gM_R1sDwiW#G=JYD!H<&Qhg0IR;^Z3&5fHhx|g6?PQug-im@jMu2TUL$2>JVjJ)Tm z+|=wyJc}R$WSHVKnu?=QtWgX4k#5C0k&@74l-_&0nZM zRQI^rPS^%yVYyRXk>0&FnxL&&4|}Qy>|;&%M(f@gq=T{5_4$b}k9f+$Q^fUg6gfFW zwnkcjn(r*hu3^nfr|$=3&&w&UqcpzM%N~COS(kRf29#~Q5b+2nBlzMqa#wEwL6vJu zVOnjpH5$}!kABV3%@vBpcD{GJweaa8&Lki4GFFpb^0iQDDnknAwvg&Gp4;Au#saK$ zVRvs%JZob+HwYC`f`Yv^%X+@Xe@ySw=uRtWJO_kc(nu|(a&K7EHNmR(bT6(=*FuFA z)h?R*NagX8(x*|^U1*EeEPd=GfD?Mjr#XWL{Qch$%Y_QXTw6&y?#y+B!{VT8uKx1G zr}D|)J2Jk={o|7Vc}|~F@duZ6QWxPwxUB)L%JgzDt?zz{YW5HG@r4cmQA9RD<3UIBDK7$1w-QnX|n=&!S6J#FSNeT0%D6YqIUEif*S>-oYH>emR5}^Fkwg@_oh35b$_S93CGmdz$@Es=#J; zeN9ja714I3q6@tu+)BDBeyF5T)-tFLe)~f-Vq8coja2Q-F895(dJZ}6uSk_y2F|BM z2ufQ4noTQziPQIMt^tazs0rq%XIq2V_qc*JAdmcS!E-OmM6aK8ekfIob4^iObE(#y zUHC(`UzN+Jt^3o7f4Y$32Qj(-0gvB171uc!#sB~S24YJ`L;%PDS^!tH0(VpZ000Sa zNLh0L01FcU01FcV0GgZ_00007bV*G`2jv9<0V4$`wT`m@000?uMObu0Z*6U5Zgc=c za%Ew3Wn>_CX>@2HM@dakSAh-}0004CNklbF5XOHoK`b;JVIM$K99Z8z zgPq_DXerpKg^gMWSBOs`_yF2S;;Kp&{r>lkCK@B4V3=Z)r$1%5iFTC>(}10W(?Yt0g{KT~|LB0{1RiBgp!Ypopv*h^Cyz`N@%B3xU*m=o zt`rm4%`%KJzZ1nVec%Xe6THe6MC2Pa2#BJHEhpZv%>xfW)2*`v&{}%{_i;?3R4HDb z=M{hjU}YMGL~8(+ouB79BEnr9^9gJkL&Mt2MOG*rgJ*!3k+ECA8*mx~W9K~f7fu|v j9Vl0|3LH#0`#-TSNF9Mg)SuCN00000NkvXXu0mjfBRps$ literal 0 HcmV?d00001 From e6b61a1551948352bf7e3dce3f59f7238a5d413e Mon Sep 17 00:00:00 2001 From: talamh Date: Sun, 2 May 2021 02:00:21 +0000 Subject: [PATCH 002/271] Update 'mods/ENTITIES/mobs_mc/rabbit.lua' --- mods/ENTITIES/mobs_mc/rabbit.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/rabbit.lua b/mods/ENTITIES/mobs_mc/rabbit.lua index 90d5c27bf..2a9521ecb 100644 --- a/mods/ENTITIES/mobs_mc/rabbit.lua +++ b/mods/ENTITIES/mobs_mc/rabbit.lua @@ -233,4 +233,4 @@ mobs:spawn(spawn_grass) mobs:register_egg("mobs_mc:rabbit", S("Rabbit"), "mobs_mc_spawn_icon_rabbit.png", 0) -- Note: This spawn egg does not exist in Minecraft -mobs:register_egg("mobs_mc:killer_bunny", S("Killer Bunny"), "mobs_mc_spawn_icon_rabbit.png^[colorize:#FF0000:192", 0) -- TODO: Update inventory image +mobs:register_egg("mobs_mc:killer_bunny", S("Killer Bunny"), "mobs_mc_spawn_icon_rabbit_caerbannog.png", 0) From a65db15b5caf92e1e18c07880ea62b8ff5ce61ff Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 29 May 2021 19:21:15 +0000 Subject: [PATCH 003/271] Totem particle textures --- .../textures/mcl_particles_totem1.png | Bin 0 -> 148 bytes .../textures/mcl_particles_totem2.png | Bin 0 -> 154 bytes .../textures/mcl_particles_totem3.png | Bin 0 -> 155 bytes .../textures/mcl_particles_totem4.png | Bin 0 -> 165 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/CORE/mcl_particles/textures/mcl_particles_totem1.png create mode 100644 mods/CORE/mcl_particles/textures/mcl_particles_totem2.png create mode 100644 mods/CORE/mcl_particles/textures/mcl_particles_totem3.png create mode 100644 mods/CORE/mcl_particles/textures/mcl_particles_totem4.png diff --git a/mods/CORE/mcl_particles/textures/mcl_particles_totem1.png b/mods/CORE/mcl_particles/textures/mcl_particles_totem1.png new file mode 100644 index 0000000000000000000000000000000000000000..15fe082e104d5d524ab2fa7b9af63c29c196756d GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VY)RhkE7sn8Z%gG4~v=dyO{rUg@zkN*8 lL_xjdE1|%O$WD@{VY)RhkE rgruaTp-7@BgTe~DWM4f;{PWz literal 0 HcmV?d00001 diff --git a/mods/CORE/mcl_particles/textures/mcl_particles_totem3.png b/mods/CORE/mcl_particles/textures/mcl_particles_totem3.png new file mode 100644 index 0000000000000000000000000000000000000000..55d6f49d3543ca553e475954f6012306ea7ba0bf GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VY)RhkEp00i_>zopr0FK-$I{*Lx literal 0 HcmV?d00001 diff --git a/mods/CORE/mcl_particles/textures/mcl_particles_totem4.png b/mods/CORE/mcl_particles/textures/mcl_particles_totem4.png new file mode 100644 index 0000000000000000000000000000000000000000..d6e6502b7fd0c0d1a68c8afdcea112d4693e07db GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VY)RhkEpe+aVfI>!|E{-7*my;6|m<*JP|NZ~}UtaIv zi4z?QIU*T%Il0AfO%OE_e5|H6NyhJjZ%d842m^yIw+NSW@uBHJ-3*?telF{r5}E+c C1}gjj literal 0 HcmV?d00001 From 75e263debca16802eabb977cbae1f1895dd32bc5 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 29 May 2021 19:24:16 +0000 Subject: [PATCH 004/271] Add code for totem partciles --- mods/ITEMS/mcl_totems/init.lua | 48 ++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index 499d7362d..e64404c2c 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -4,6 +4,41 @@ minetest.register_on_leaveplayer(function(player) hud_totem[player] = nil end) +-- Totem particle registration +-- TODO: real MC colors, these are randomly selected colors: +local colors = {"#7FFF00", "#698B22", "#BCEE68", "#EEEE00", "#C5F007"} +for c, color in pairs(colors) do + local colorizing = ".png^[colorize:"..color + for n = 1, 4 do + minetest.register_entity("mcl_totems:totem_particle"..n.."_color"..c, { + physical = true, + collide_with_objects = false, + collisionbox = {-0.02,-0.02,-0.02, 0.02,0.02,0.02}, + pointable = false, + visual = "sprite", + visual_size = {x=0.2, y=0.2}, + textures = {"mcl_particles_totem"..n..colorizing}, + spritediv = {x=1, y=1}, + initial_sprite_basepos = {x=0, y=0}, + static_save = false, + glow = 5, + on_activate = function(self, staticdata) + self.object:set_velocity({x = math.random(-4, 4)*math.random(), y = math.random(-1, 4)*math.random(), z = math.random(-4, 4)*math.random()}) + minetest.after(0.3, function() + self.object:set_acceleration({x=0, y=-4, z=0}) + self.object:set_velocity({x=0, y=0, z=0}) + end) + end, + on_step = function(self, dtime) + local r = math.random(1,80) + if r == 1 then + self.object:remove() + end + end + }) + end +end + -- Save the player from death when holding totem of undying in hand mcl_damage.register_modifier(function(obj, damage, reason) if obj:is_player() then @@ -32,7 +67,16 @@ mcl_damage.register_modifier(function(obj, damage, reason) -- Effects minetest.sound_play({name = "mcl_totems_totem", gain=1}, {pos=ppos, max_hear_distance=16}, true) - -- Big totem overlay + --Particles + for i = 1, 200 do + local particle = "mcl_totems:totem_particle"..math.random(1, 4).."_color"..math.random(1, 5) + minetest.after(math.random(1, 2)*math.random(), function() + local new_pos = obj:get_pos() + minetest.add_entity({x=new_pos.x, y=new_pos.y + 1, z=new_pos.z}, particle) + end) + end + + -- Big totem overlay if not hud_totem[obj] then hud_totem[obj] = obj:hud_add({ hud_elem_type = "image", @@ -55,4 +99,4 @@ mcl_damage.register_modifier(function(obj, damage, reason) end end end -end, 1000) +end, 1000) \ No newline at end of file From 640b0dc4859014f15939cce0be36dd06c2b1419c Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 2 Jun 2021 00:23:11 +0200 Subject: [PATCH 005/271] basic title API working (testing needed) --- mods/HUD/mcl_title/init.lua | 161 ++++++++++++++++++++++++++++++++++++ mods/HUD/mcl_title/mod.conf | 4 + 2 files changed, 165 insertions(+) create mode 100644 mods/HUD/mcl_title/init.lua create mode 100644 mods/HUD/mcl_title/mod.conf diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua new file mode 100644 index 000000000..9975ff840 --- /dev/null +++ b/mods/HUD/mcl_title/init.lua @@ -0,0 +1,161 @@ +--TODO: use SSCSM to reduce lag and network trafic (just send modchannel messages) +--TODO: exactly mc like layout + +local huds_idx = {} + +huds_idx.title = {} +huds_idx.subtitle = {} +huds_idx.actionbar = {} + +mcl_title = {} +mcl_title.defaults = {fadein = 10, stay = 70, fadeout = 20} +mcl_title.layout = {} +mcl_title.layout.title = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = -1.3}, size = 5} +mcl_title.layout.subtitle = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = 1.9}, size = 2} +mcl_title.layout.actionbar = {position = {x = 0.5, y = 1}, alignment = {x = 0, y = -15}, size = 1} + +local get_color = mcl_util.get_color + +local function gametick_to_secondes(gametick) + return gametick / 20 +end + + +--PARAMS SYSTEM +local player_params = {} + +minetest.register_on_joinplayer(function(player) + player_params[player] = { + stay = gametick_to_secondes(mcl_title.defaults.stay), + --fadeIn = gametick_to_secondes(mcl_title.defaults.fadein), + --fadeOut = gametick_to_secondes(mcl_title.defaults.fadeout), + } +end) + +minetest.register_on_leaveplayer(function(player) + player_params = nil +end) + +function mcl_title.params_set(player, data) + player_params[player] = { + stay = gametick_to_secondes(data.stay) or gametick_to_secondes(mcl_title.defaults.stay), + --fadeIn = gametick_to_secondes(data.fadeIn) or gametick_to_secondes(mcl_title.defaults.fadein), + --fadeOut = gametick_to_secondes(data.fadeOut) or gametick_to_secondes(mcl_title.defaults.fadeout), + } +end + +function mcl_title.params_get(player) + return player_params[player] +end + +--API FUNCTIONS + +function mcl_title.set(player, type, data) + if not data.color then + data.color = "white" + end + local _, hex_color = get_color(data.color) + if not hex_color then + return false + end + + if huds_idx[type][player] then + player:hud_remove(huds_idx[type][player]) + end + + --TODO: enable this code then Fleckenstein's pr get merged + --[[ + local bold + if data.bold == "true" then + bold = true + else + bold = false + end + + local italic + if data.italic == "true" then + italic = true + else + italic = false + end]] + + local stay = mcl_title.params_get(player).stay + + huds_idx[type][player] = player:hud_add({ + hud_elem_type = "text", + position = mcl_title.layout[type].position, + alignment = mcl_title.layout[type].alignment, + text = data.text, + --bold = bold, + --italic = italic, + size = {x = mcl_title.layout[type].size}, + number = hex_color, + z_index = 1100, + }) + + minetest.after(stay, function() + if huds_idx[type][player] then + player:hud_remove(huds_idx[type][player]) + end + huds_idx[type][player] = nil + end) + return true +end + +function mcl_title.remove(player, type) + if huds_idx[type][player] then + player:hud_remove(huds_idx[type][player]) + end + huds_idx[type][player] = nil +end + +function mcl_title.clear(player) + mcl_title.remove(player, "title") + mcl_title.remove(player, "subtitle") + mcl_title.remove(player, "actionbar") +end + +minetest.register_on_dieplayer(function(player) + mcl_title.clear(player) +end) + + +--TEMP STUFF!! +--TODO: remove then testing/tweaking done +minetest.register_chatcommand("title", { + func = function(name, param) + local player = minetest.get_player_by_name(name) + mcl_title.set(player, "title", {text=param, color="gold"}) + end, +}) + +minetest.register_chatcommand("subtitle", { + func = function(name, param) + local player = minetest.get_player_by_name(name) + mcl_title.set(player, "subtitle", {text=param, color="gold"}) + end, +}) + +minetest.register_chatcommand("actionbar", { + func = function(name, param) + local player = minetest.get_player_by_name(name) + mcl_title.set(player, "actionbar", {text=param, color="gold"}) + end, +}) + +minetest.register_chatcommand("timeout", { + func = function(name, param) + local player = minetest.get_player_by_name(name) + mcl_title.params_set(player, {stay = 600}) + end, +}) + +minetest.register_chatcommand("all", { + func = function(name, param) + local player = minetest.get_player_by_name(name) + mcl_title.params_set(player, {stay = 600}) + mcl_title.set(player, "title", {text=param, color="gold"}) + mcl_title.set(player, "subtitle", {text=param, color="gold"}) + mcl_title.set(player, "actionbar", {text=param, color="gold"}) + end, +}) \ No newline at end of file diff --git a/mods/HUD/mcl_title/mod.conf b/mods/HUD/mcl_title/mod.conf new file mode 100644 index 000000000..0f29a8118 --- /dev/null +++ b/mods/HUD/mcl_title/mod.conf @@ -0,0 +1,4 @@ +name = mcl_title +description = Add an API to add in HUD title +depends = mcl_colors +author = AFCMS \ No newline at end of file From 6b53dda79bf8b31309206ea29b6e84184cc17fc7 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 2 Jun 2021 00:25:15 +0200 Subject: [PATCH 006/271] add todo list --- mods/HUD/mcl_title/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 9975ff840..41b4dfc4a 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -1,4 +1,5 @@ --TODO: use SSCSM to reduce lag and network trafic (just send modchannel messages) +--TODO: fadeIn and fadeOut animation (needs engine change: SSCSM or native support) --TODO: exactly mc like layout local huds_idx = {} From c8102838cb80e5ada8649a7ccf48c1c288a4de2b Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 2 Jun 2021 00:26:10 +0200 Subject: [PATCH 007/271] add missing TODO entry (bold+italic) --- mods/HUD/mcl_title/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 41b4dfc4a..807ed19c9 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -65,6 +65,7 @@ function mcl_title.set(player, type, data) end --TODO: enable this code then Fleckenstein's pr get merged + --TODO: be sure API is correctly used --[[ local bold if data.bold == "true" then From 7e64470f7086c2978f0ad48710d6c0f253b6c3cb Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 2 Jun 2021 11:07:31 +0200 Subject: [PATCH 008/271] fix future API usage of bold+italic pr --- mods/HUD/mcl_title/init.lua | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 807ed19c9..83277b3bf 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -64,22 +64,10 @@ function mcl_title.set(player, type, data) player:hud_remove(huds_idx[type][player]) end - --TODO: enable this code then Fleckenstein's pr get merged - --TODO: be sure API is correctly used - --[[ - local bold - if data.bold == "true" then - bold = true - else - bold = false - end + --TODO: enable this code then Fleckenstein's pr get merged (in about 5-6 years) - local italic - if data.italic == "true" then - italic = true - else - italic = false - end]] + --if data.bold == nil then data.bold = false end + --if data.italic == nil then data.italic = false end local stay = mcl_title.params_get(player).stay @@ -88,8 +76,8 @@ function mcl_title.set(player, type, data) position = mcl_title.layout[type].position, alignment = mcl_title.layout[type].alignment, text = data.text, - --bold = bold, - --italic = italic, + --bold = data.bold, + --italic = data.italic, size = {x = mcl_title.layout[type].size}, number = hex_color, z_index = 1100, From b9fd1ac227c59407a92ca208d1fd71681c7952f0 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 2 Jun 2021 11:12:15 +0200 Subject: [PATCH 009/271] credit digminecraft for the tutorial --- mods/HUD/mcl_title/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 83277b3bf..a2fd82b24 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -1,3 +1,5 @@ +--Based on https://www.digminecraft.com/game_commands/title_command.php + --TODO: use SSCSM to reduce lag and network trafic (just send modchannel messages) --TODO: fadeIn and fadeOut animation (needs engine change: SSCSM or native support) --TODO: exactly mc like layout From ee21a24fb61705bedfee8b2ad935b1e389018a58 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 7 Jun 2021 17:13:50 +0000 Subject: [PATCH 010/271] Don't register a separate entity for every particle --- mods/ITEMS/mcl_totems/init.lua | 60 ++++++++++++++++------------------ 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index e64404c2c..a6429f7b8 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -7,37 +7,34 @@ end) -- Totem particle registration -- TODO: real MC colors, these are randomly selected colors: local colors = {"#7FFF00", "#698B22", "#BCEE68", "#EEEE00", "#C5F007"} -for c, color in pairs(colors) do - local colorizing = ".png^[colorize:"..color - for n = 1, 4 do - minetest.register_entity("mcl_totems:totem_particle"..n.."_color"..c, { - physical = true, - collide_with_objects = false, - collisionbox = {-0.02,-0.02,-0.02, 0.02,0.02,0.02}, - pointable = false, - visual = "sprite", - visual_size = {x=0.2, y=0.2}, - textures = {"mcl_particles_totem"..n..colorizing}, - spritediv = {x=1, y=1}, - initial_sprite_basepos = {x=0, y=0}, - static_save = false, - glow = 5, - on_activate = function(self, staticdata) - self.object:set_velocity({x = math.random(-4, 4)*math.random(), y = math.random(-1, 4)*math.random(), z = math.random(-4, 4)*math.random()}) - minetest.after(0.3, function() - self.object:set_acceleration({x=0, y=-4, z=0}) - self.object:set_velocity({x=0, y=0, z=0}) - end) - end, - on_step = function(self, dtime) - local r = math.random(1,80) - if r == 1 then - self.object:remove() - end - end +minetest.register_entity("mcl_totems:totem_particle", { + physical = true, + collide_with_objects = false, + collisionbox = {-0.02,-0.02,-0.02, 0.02,0.02,0.02}, + pointable = false, + visual = "sprite", + visual_size = {x=0.2, y=0.2}, + spritediv = {x=1, y=1}, + initial_sprite_basepos = {x=0, y=0}, + static_save = false, + glow = 5, + on_activate = function(self, staticdata) + self.object:set_properties({ + textures = {"mcl_particles_totem"..math.random(1, 4)..".png^[colorize:"..colors[math.random(#colors)]} }) + self.object:set_velocity({x = math.random(-4, 4)*math.random(), y = math.random(-1, 4)*math.random(), z = math.random(-4, 4)*math.random()}) + minetest.after(0.3, function() + self.object:set_acceleration({x=0, y=-4, z=0}) + self.object:set_velocity({x=0, y=0, z=0}) + end) + end, + on_step = function(self, dtime) + local r = math.random(1,50) + if r == 1 then + self.object:remove() + end end -end +}) -- Save the player from death when holding totem of undying in hand mcl_damage.register_modifier(function(obj, damage, reason) @@ -68,11 +65,10 @@ mcl_damage.register_modifier(function(obj, damage, reason) minetest.sound_play({name = "mcl_totems_totem", gain=1}, {pos=ppos, max_hear_distance=16}, true) --Particles - for i = 1, 200 do - local particle = "mcl_totems:totem_particle"..math.random(1, 4).."_color"..math.random(1, 5) + for i = 1, 150 do minetest.after(math.random(1, 2)*math.random(), function() local new_pos = obj:get_pos() - minetest.add_entity({x=new_pos.x, y=new_pos.y + 1, z=new_pos.z}, particle) + minetest.add_entity({x = new_pos.x, y = new_pos.y + 1, z = new_pos.z}, "mcl_totems:totem_particle") end) end From 2603c4768ba34be059b8f3dd175985bc08683cea Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 7 Jun 2021 22:32:05 +0200 Subject: [PATCH 011/271] mcl_title: basic mc like layout (collide with other mods) --- mods/HUD/mcl_title/init.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index a2fd82b24..ffd740b4a 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -1,7 +1,11 @@ ---Based on https://www.digminecraft.com/game_commands/title_command.php +--Based on: +--https://www.digminecraft.com/game_commands/title_command.php +--https://youtu.be/oVrtQRO2hpY --TODO: use SSCSM to reduce lag and network trafic (just send modchannel messages) --TODO: fadeIn and fadeOut animation (needs engine change: SSCSM or native support) +--TODO: allow obfuscating text (needs engine change: SSCSM or native support) +--TODO: allow colorizing and styling of part of the text (NEEDS ENGINE CHANGE!!!) --TODO: exactly mc like layout local huds_idx = {} @@ -13,9 +17,9 @@ huds_idx.actionbar = {} mcl_title = {} mcl_title.defaults = {fadein = 10, stay = 70, fadeout = 20} mcl_title.layout = {} -mcl_title.layout.title = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = -1.3}, size = 5} -mcl_title.layout.subtitle = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = 1.9}, size = 2} -mcl_title.layout.actionbar = {position = {x = 0.5, y = 1}, alignment = {x = 0, y = -15}, size = 1} +mcl_title.layout.title = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = -1.3}, size = 7} +mcl_title.layout.subtitle = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = 1.7}, size = 4} +mcl_title.layout.actionbar = {position = {x = 0.5, y = 1}, alignment = {x = 0, y = -11}, size = 2} local get_color = mcl_util.get_color From 99ccd9ea4c77d09a7e4062f16819a3bbdff9fe53 Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 8 Jun 2021 15:13:00 +0000 Subject: [PATCH 012/271] Fix possible crash --- mods/ITEMS/mcl_totems/init.lua | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index a6429f7b8..1847d579b 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -22,8 +22,11 @@ minetest.register_entity("mcl_totems:totem_particle", { self.object:set_properties({ textures = {"mcl_particles_totem"..math.random(1, 4)..".png^[colorize:"..colors[math.random(#colors)]} }) - self.object:set_velocity({x = math.random(-4, 4)*math.random(), y = math.random(-1, 4)*math.random(), z = math.random(-4, 4)*math.random()}) - minetest.after(0.3, function() + local t = math.random(1, 2)*math.random() + minetest.after(t, function() + self.object:set_velocity({x = math.random(-4, 4)*math.random(), y = math.random(-1, 4)*math.random(), z = math.random(-4, 4)*math.random()}) + end) + minetest.after(0.3 + t, function() self.object:set_acceleration({x=0, y=-4, z=0}) self.object:set_velocity({x=0, y=0, z=0}) end) @@ -65,12 +68,14 @@ mcl_damage.register_modifier(function(obj, damage, reason) minetest.sound_play({name = "mcl_totems_totem", gain=1}, {pos=ppos, max_hear_distance=16}, true) --Particles - for i = 1, 150 do - minetest.after(math.random(1, 2)*math.random(), function() - local new_pos = obj:get_pos() + + minetest.after(0.1, function() + local new_pos = obj:get_pos() + if not new_pos then return end + for i = 1, 150 do minetest.add_entity({x = new_pos.x, y = new_pos.y + 1, z = new_pos.z}, "mcl_totems:totem_particle") - end) - end + end + end) -- Big totem overlay if not hud_totem[obj] then From ee2fa60cae6f151720c1ac7949218f7fee6d4013 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 9 Jun 2021 14:47:42 +0000 Subject: [PATCH 013/271] local totem particle position --- mods/ITEMS/mcl_totems/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index 1847d579b..ecdc20da0 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -72,8 +72,9 @@ mcl_damage.register_modifier(function(obj, damage, reason) minetest.after(0.1, function() local new_pos = obj:get_pos() if not new_pos then return end + local particlepos = {x = new_pos.x, y = new_pos.y + 1, z = new_pos.z} for i = 1, 150 do - minetest.add_entity({x = new_pos.x, y = new_pos.y + 1, z = new_pos.z}, "mcl_totems:totem_particle") + minetest.add_entity(particlepos, "mcl_totems:totem_particle") end end) From 509568b4b01e7529af9c8ad1e00980eba7bbd648 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 8 Jul 2021 16:49:19 +0000 Subject: [PATCH 014/271] Use real Minecraft colors for totem particles! --- mods/ITEMS/mcl_totems/init.lua | 38 ++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index ecdc20da0..2311e88d7 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -5,8 +5,32 @@ minetest.register_on_leaveplayer(function(player) end) -- Totem particle registration --- TODO: real MC colors, these are randomly selected colors: -local colors = {"#7FFF00", "#698B22", "#BCEE68", "#EEEE00", "#C5F007"} +function rgb_to_hex(rgb) + local hexadecimal = "#" + + for key, value in pairs(rgb) do + local hex = "" + + while value > 0 do + local index = math.fmod(value, 16) + 1 + value = math.floor(value / 16) + hex = string.sub("0123456789ABCDEF", index, index) .. hex + end + + local len = string.len(hex) + + if len == 0 then + hex = "00" + elseif len == 1 then + hex = "0" .. hex + end + + hexadecimal = hexadecimal .. hex + end + + return hexadecimal +end + minetest.register_entity("mcl_totems:totem_particle", { physical = true, collide_with_objects = false, @@ -17,10 +41,16 @@ minetest.register_entity("mcl_totems:totem_particle", { spritediv = {x=1, y=1}, initial_sprite_basepos = {x=0, y=0}, static_save = false, - glow = 5, + glow = 14, on_activate = function(self, staticdata) + local color + if math.random(0, 3) == 0 then + color = rgb_to_hex({ (0.6 + math.random() * 0.2) * 255, (0.6 + math.random() * 0.3) * 255, (math.random() * 0.2) * 255 }) + else + color = rgb_to_hex({ (0.1 + math.random() * 0.4) * 255, (0.6 + math.random() * 0.3) * 255, (math.random() * 0.2) * 255 }) + end self.object:set_properties({ - textures = {"mcl_particles_totem"..math.random(1, 4)..".png^[colorize:"..colors[math.random(#colors)]} + textures = { "mcl_particles_totem"..math.random(1, 4)..".png^[colorize:"..color } }) local t = math.random(1, 2)*math.random() minetest.after(t, function() From 8e931e92f57ce18792a846828e0e942f52f8eef1 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 9 Jul 2021 11:34:23 +0200 Subject: [PATCH 015/271] refactor mcl_title to be more efficient --- mods/HUD/mcl_title/init.lua | 120 +++++++++++++++++++++++++++--------- 1 file changed, 90 insertions(+), 30 deletions(-) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index ffd740b4a..48c3a909f 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -8,8 +8,17 @@ --TODO: allow colorizing and styling of part of the text (NEEDS ENGINE CHANGE!!!) --TODO: exactly mc like layout +--Note that the table storing timeouts use playername as index insteed of player objects (faster) +--This is intended in order to speedup the process of removing HUD elements the the timeout is up + local huds_idx = {} +local hud_hide_timeouts = {} + +hud_hide_timeouts.title = {} +hud_hide_timeouts.subtitle = {} +hud_hide_timeouts.actionbar = {} + huds_idx.title = {} huds_idx.subtitle = {} huds_idx.actionbar = {} @@ -19,10 +28,13 @@ mcl_title.defaults = {fadein = 10, stay = 70, fadeout = 20} mcl_title.layout = {} mcl_title.layout.title = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = -1.3}, size = 7} mcl_title.layout.subtitle = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = 1.7}, size = 4} -mcl_title.layout.actionbar = {position = {x = 0.5, y = 1}, alignment = {x = 0, y = -11}, size = 2} +mcl_title.layout.actionbar = {position = {x = 0.5, y = 1}, alignment = {x = 0, y = 0}, size = 1} local get_color = mcl_util.get_color +local string = string +local pairs = pairs + local function gametick_to_secondes(gametick) return gametick / 20 end @@ -32,15 +44,64 @@ end local player_params = {} minetest.register_on_joinplayer(function(player) - player_params[player] = { + local playername = player:get_player_name() + player_params[playername] = { stay = gametick_to_secondes(mcl_title.defaults.stay), --fadeIn = gametick_to_secondes(mcl_title.defaults.fadein), --fadeOut = gametick_to_secondes(mcl_title.defaults.fadeout), - } + } + local _, hex_color = get_color("white") + huds_idx.title[player] = player:hud_add({ + hud_elem_type = "text", + position = mcl_title.layout.title.position, + alignment = mcl_title.layout.title.alignment, + text = "", + --bold = data.bold, + --italic = data.italic, + size = {x = mcl_title.layout.title.size}, + number = hex_color, + z_index = 100, + }) + huds_idx.subtitle[player] = player:hud_add({ + hud_elem_type = "text", + position = mcl_title.layout.subtitle.position, + alignment = mcl_title.layout.subtitle.alignment, + text = "", + --bold = data.bold, + --italic = data.italic, + size = {x = mcl_title.layout.subtitle.size}, + number = hex_color, + z_index = 100, + }) + huds_idx.actionbar[player] = player:hud_add({ + hud_elem_type = "text", + position = mcl_title.layout.actionbar.position, + offset = {x = 0, y = -210}, + alignment = mcl_title.layout.actionbar.alignment, + --bold = data.bold, + --italic = data.italic, + text = "", + size = {x = mcl_title.layout.actionbar.size}, + number = hex_color, + z_index = 100, + }) end) minetest.register_on_leaveplayer(function(player) - player_params = nil + local playername = player:get_player_name() + + --remove player params from the list + player_params[player] = nil + + --remove HUD idx from the list (HUD elements are removed by the engine) + huds_idx.title[player] = nil + huds_idx.subtitle[player] = nil + huds_idx.actionbar[player] = nil + + --remove timers form list + hud_hide_timeouts.title[playername] = nil + hud_hide_timeouts.subtitle[playername] = nil + hud_hide_timeouts.actionbar[playername] = nil end) function mcl_title.params_set(player, data) @@ -66,43 +127,22 @@ function mcl_title.set(player, type, data) return false end - if huds_idx[type][player] then - player:hud_remove(huds_idx[type][player]) - end - --TODO: enable this code then Fleckenstein's pr get merged (in about 5-6 years) --if data.bold == nil then data.bold = false end --if data.italic == nil then data.italic = false end - local stay = mcl_title.params_get(player).stay + player:hud_change(huds_idx[type][player], "text", data.text) + player:hud_change(huds_idx[type][player], "number", hex_color) - huds_idx[type][player] = player:hud_add({ - hud_elem_type = "text", - position = mcl_title.layout[type].position, - alignment = mcl_title.layout[type].alignment, - text = data.text, - --bold = data.bold, - --italic = data.italic, - size = {x = mcl_title.layout[type].size}, - number = hex_color, - z_index = 1100, - }) - - minetest.after(stay, function() - if huds_idx[type][player] then - player:hud_remove(huds_idx[type][player]) - end - huds_idx[type][player] = nil - end) + hud_hide_timeouts[type][player:get_player_name()] = data.stay or mcl_title.params_get(player).stay return true end function mcl_title.remove(player, type) - if huds_idx[type][player] then - player:hud_remove(huds_idx[type][player]) + if player then + player:hud_change(huds_idx[type][player], "text", "") end - huds_idx[type][player] = nil end function mcl_title.clear(player) @@ -115,6 +155,26 @@ minetest.register_on_dieplayer(function(player) mcl_title.clear(player) end) +minetest.register_globalstep(function(dtime) + local new_timeouts = { + title = {}, + subtitle = {}, + actionbar = {}, + } + for element, content in pairs(hud_hide_timeouts) do + for name, timeout in pairs(content) do + timeout = timeout - dtime + if timeout <= 0 then + local player = minetest.get_player_by_name(name) + mcl_title.remove(player, element) + else + new_timeouts[element][name] = timeout + end + end + end + hud_hide_timeouts = new_timeouts +end) + --TEMP STUFF!! --TODO: remove then testing/tweaking done From d2f7d3136028f726d3aaba1ff7e4304e1952aef5 Mon Sep 17 00:00:00 2001 From: Emojigit Date: Sat, 10 Jul 2021 10:16:55 +0800 Subject: [PATCH 016/271] Fix warning in `mcl_end` This fixes: ``` 2021-07-10 10:00:58: WARNING[Main]: get_mapgen_params is deprecated; use get_mapgen_setting instead (at .../../games/MineClone2/mods/ITEMS/mcl_end/chorus_plant.lua:456) ``` --- mods/ITEMS/mcl_end/chorus_plant.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_end/chorus_plant.lua b/mods/ITEMS/mcl_end/chorus_plant.lua index 24307b5ed..4dc54db18 100644 --- a/mods/ITEMS/mcl_end/chorus_plant.lua +++ b/mods/ITEMS/mcl_end/chorus_plant.lua @@ -453,7 +453,7 @@ function mcl_end.grow_chorus_plant_step(pos, node, pr) end --- ABM --- -local seed = minetest.get_mapgen_params().seed +local seed = minetest.get_mapgen_setting("seed") local pr = PseudoRandom(seed) minetest.register_abm({ label = "Chorus plant growth", From 5ceb48fcb13ae20a4295cc7c0d4cbcfa30c26a8c Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 12 Jul 2021 18:05:52 +0000 Subject: [PATCH 017/271] Faster rgb to hex --- mods/ITEMS/mcl_totems/init.lua | 61 +++++++++++----------------------- 1 file changed, 20 insertions(+), 41 deletions(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index 2311e88d7..5f9b254a3 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -5,64 +5,43 @@ minetest.register_on_leaveplayer(function(player) end) -- Totem particle registration -function rgb_to_hex(rgb) - local hexadecimal = "#" - for key, value in pairs(rgb) do - local hex = "" - - while value > 0 do - local index = math.fmod(value, 16) + 1 - value = math.floor(value / 16) - hex = string.sub("0123456789ABCDEF", index, index) .. hex - end - - local len = string.len(hex) - - if len == 0 then - hex = "00" - elseif len == 1 then - hex = "0" .. hex - end - - hexadecimal = hexadecimal .. hex - end - - return hexadecimal +function rgb_to_hex(r, g, b) + return string.format("%02x%02x%02x", r, g, b) end minetest.register_entity("mcl_totems:totem_particle", { physical = true, collide_with_objects = false, - collisionbox = {-0.02,-0.02,-0.02, 0.02,0.02,0.02}, + collisionbox = { -0.02, -0.02, -0.02, 0.02, 0.02, 0.02 }, pointable = false, visual = "sprite", - visual_size = {x=0.2, y=0.2}, - spritediv = {x=1, y=1}, - initial_sprite_basepos = {x=0, y=0}, + visual_size = { x = 0.2, y = 0.2 }, + spritediv = { x = 1, y = 1 }, + initial_sprite_basepos = { x = 0, y = 0 }, static_save = false, glow = 14, on_activate = function(self, staticdata) local color if math.random(0, 3) == 0 then - color = rgb_to_hex({ (0.6 + math.random() * 0.2) * 255, (0.6 + math.random() * 0.3) * 255, (math.random() * 0.2) * 255 }) + color = rgb_to_hex( 153 + math.random() * 51, 153 + math.random() * 76.5, math.random() * 51) else - color = rgb_to_hex({ (0.1 + math.random() * 0.4) * 255, (0.6 + math.random() * 0.3) * 255, (math.random() * 0.2) * 255 }) + color = rgb_to_hex(25.5 + math.random() * 102, 153 + math.random() * 76.5, math.random() * 51) end self.object:set_properties({ - textures = { "mcl_particles_totem"..math.random(1, 4)..".png^[colorize:"..color } + textures = { "mcl_particles_totem"..math.random(1, 4)..".png^[colorize:#"..color } }) local t = math.random(1, 2)*math.random() minetest.after(t, function() - self.object:set_velocity({x = math.random(-4, 4)*math.random(), y = math.random(-1, 4)*math.random(), z = math.random(-4, 4)*math.random()}) + self.object:set_velocity({ x = math.random(-4, 4) * math.random(), y = math.random(-1, 4) * math.random(), z = math.random(-4, 4) * math.random() }) end) minetest.after(0.3 + t, function() - self.object:set_acceleration({x=0, y=-4, z=0}) - self.object:set_velocity({x=0, y=0, z=0}) + self.object:set_acceleration({ x = 0, y = -4, z = 0 }) + self.object:set_velocity({ x = 0, y = 0, z = 0 }) end) end, on_step = function(self, dtime) - local r = math.random(1,50) + local r = math.random(1, 50) if r == 1 then self.object:remove() end @@ -79,7 +58,7 @@ mcl_damage.register_modifier(function(obj, damage, reason) local ppos = obj:get_pos() local pnname = minetest.get_node(ppos).name -- Some exceptions when _not_ to save the player - for n=1, #mobs_mc.misc.totem_fail_nodes do + for n = 1, #mobs_mc.misc.totem_fail_nodes do if pnname == mobs_mc.misc.totem_fail_nodes[n] then return end @@ -95,14 +74,14 @@ mcl_damage.register_modifier(function(obj, damage, reason) end -- Effects - minetest.sound_play({name = "mcl_totems_totem", gain=1}, {pos=ppos, max_hear_distance=16}, true) + minetest.sound_play({ name = "mcl_totems_totem", gain = 1 }, { pos = ppos, max_hear_distance = 16 }, true) --Particles minetest.after(0.1, function() local new_pos = obj:get_pos() if not new_pos then return end - local particlepos = {x = new_pos.x, y = new_pos.y + 1, z = new_pos.z} + local particlepos = { x = new_pos.x, y = new_pos.y + 1, z = new_pos.z } for i = 1, 150 do minetest.add_entity(particlepos, "mcl_totems:totem_particle") end @@ -113,9 +92,9 @@ mcl_damage.register_modifier(function(obj, damage, reason) hud_totem[obj] = obj:hud_add({ hud_elem_type = "image", text = "mcl_totems_totem.png", - position = { x=0.5, y=1 }, - scale = { x=17, y=17 }, - offset = { x=0, y=-178 }, + position = { x = 0.5, y = 1 }, + scale = { x = 17, y = 17 }, + offset = { x = 0, y = -178 }, z_index = 100, }) minetest.after(3, function() @@ -131,4 +110,4 @@ mcl_damage.register_modifier(function(obj, damage, reason) end end end -end, 1000) \ No newline at end of file +end, 1000) From 60fcafeee4fdeb9a236f141801fc95e103685178 Mon Sep 17 00:00:00 2001 From: Tianyang Zhang Date: Thu, 15 Jul 2021 19:25:32 -0700 Subject: [PATCH 018/271] Update description of emerald --- mods/ITEMS/mcl_core/craftitems.lua | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.es.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.pl.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.ru.tr | 2 +- mods/ITEMS/mcl_core/locale/template.txt | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_core/craftitems.lua b/mods/ITEMS/mcl_core/craftitems.lua index 03f30b7b9..836f21688 100644 --- a/mods/ITEMS/mcl_core/craftitems.lua +++ b/mods/ITEMS/mcl_core/craftitems.lua @@ -93,7 +93,7 @@ minetest.register_craftitem("mcl_core:gold_ingot", { minetest.register_craftitem("mcl_core:emerald", { description = S("Emerald"), - _doc_items_longdesc = S("Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting."), + _doc_items_longdesc = S("Emeralds are used for trading with villagers."), inventory_image = "mcl_core_emerald.png", stack_max = 64, groups = { craftitem=1 }, diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 0a1cbad37..f5a28c76f 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Smaragd Emerald Ore=Smaragderz Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Smaragderz ist das Erz von Smaragden. Es ist sehr selten und kann nur einzeln gefunden werden, nicht in Ansammlungen. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Smaragde sind nicht besonders nützlich, aber man kann sie in der Fertigung durch Goldbarren eintauschen. +Emeralds are used for trading with villagers.=Smaragde sind nicht besonders nützlich, aber man kann sie in der Fertigung durch Goldbarren eintauschen. Flint=Feuerstein Flint is a raw material.=Feuerstein ist ein Rohstoff. Flowing Lava=Fließende Lava diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr index 1e1029c0f..54ee95d16 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Esmeralda Emerald Ore=Mena de esmeralda Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=El mineral esmeralda es el mineral de las esmeraldas. Es muy raro y se puede encontrar solo, no en grupos. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Las esmeraldas no son muy útiles por sí mismas, pero pueden cambiarse por lingotes de oro haciendo artesanías. +Emeralds are used for trading with villagers.=Las esmeraldas no son muy útiles por sí mismas, pero pueden cambiarse por lingotes de oro haciendo artesanías. Flint=Pedernal Flint is a raw material.=El pedernal es una materia prima. Flowing Lava=Lava que fluye diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr index 725025e48..84657c8a1 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Emeraude Emerald Ore=Minerai d'Emeraude Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Le minerai d'émeraude produit des émeraudes. Il est très rare et peut être trouvé seul, pas en filons. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Les émeraudes ne sont pas très utiles seules, mais elles peuvent être échangées contre des lingots d'or. +Emeralds are used for trading with villagers.=Les émeraudes ne sont pas très utiles seules, mais elles peuvent être échangées contre des lingots d'or. Flint=Silex Flint is a raw material.=Le silex est une matière première. Flowing Lava=Lave qui coule diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr index 832a47830..90a75f810 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Szmaragd Emerald Ore=Ruda szmaragdu Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Ruda szmaragdu jest bardzo rzadka i występuje samotnie, nie w grupach. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Szmaragdy nie są zbyt użyteczne same w sobie, ale można z nich wytworzyć sztabki złota. +Emeralds are used for trading with villagers.=Szmaragdy nie są zbyt użyteczne same w sobie, ale można z nich wytworzyć sztabki złota. Flint=Krzemień Flint is a raw material.=Krzemień jest surowym materiałem. Flowing Lava=Płynąca lawa diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr index f93db7c2c..07236037b 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Изумруд Emerald Ore=Изумрудная руда Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Изумрудная руда встречается очень редко и всегда по одному блоку. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Изумруды не очень полезны сами по себе, но их можно обменять на золотые слитки. +Emeralds are used for trading with villagers.=Изумруды не очень полезны сами по себе, но их можно обменять на золотые слитки. Flint=Кремень Flint is a raw material.=Кремень это необработанный материал. Flowing Lava=Текущая лава diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index 2cb74f5d1..1e8ee04ce 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald= Emerald Ore= Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.= -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.= +Emeralds are used for trading with villagers.= Flint= Flint is a raw material.= Flowing Lava= From 559cf85c9449b77591603ca561618668a3fb027e Mon Sep 17 00:00:00 2001 From: Tianyang Zhang Date: Mon, 19 Jul 2021 09:12:39 -0700 Subject: [PATCH 019/271] Improve description of emerald --- mods/ITEMS/mcl_core/craftitems.lua | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.es.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.pl.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.ru.tr | 2 +- mods/ITEMS/mcl_core/locale/template.txt | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_core/craftitems.lua b/mods/ITEMS/mcl_core/craftitems.lua index 836f21688..85a078766 100644 --- a/mods/ITEMS/mcl_core/craftitems.lua +++ b/mods/ITEMS/mcl_core/craftitems.lua @@ -93,7 +93,7 @@ minetest.register_craftitem("mcl_core:gold_ingot", { minetest.register_craftitem("mcl_core:emerald", { description = S("Emerald"), - _doc_items_longdesc = S("Emeralds are used for trading with villagers."), + _doc_items_longdesc = S("Emeralds are used in villager trades as currency."), inventory_image = "mcl_core_emerald.png", stack_max = 64, groups = { craftitem=1 }, diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index f5a28c76f..8b75dfd40 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Smaragd Emerald Ore=Smaragderz Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Smaragderz ist das Erz von Smaragden. Es ist sehr selten und kann nur einzeln gefunden werden, nicht in Ansammlungen. -Emeralds are used for trading with villagers.=Smaragde sind nicht besonders nützlich, aber man kann sie in der Fertigung durch Goldbarren eintauschen. +Emeralds are used in villager trades as currency.=Smaragde sind nicht besonders nützlich, aber man kann sie in der Fertigung durch Goldbarren eintauschen. Flint=Feuerstein Flint is a raw material.=Feuerstein ist ein Rohstoff. Flowing Lava=Fließende Lava diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr index 54ee95d16..d77f45dc2 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Esmeralda Emerald Ore=Mena de esmeralda Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=El mineral esmeralda es el mineral de las esmeraldas. Es muy raro y se puede encontrar solo, no en grupos. -Emeralds are used for trading with villagers.=Las esmeraldas no son muy útiles por sí mismas, pero pueden cambiarse por lingotes de oro haciendo artesanías. +Emeralds are used in villager trades as currency.=Las esmeraldas no son muy útiles por sí mismas, pero pueden cambiarse por lingotes de oro haciendo artesanías. Flint=Pedernal Flint is a raw material.=El pedernal es una materia prima. Flowing Lava=Lava que fluye diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr index 84657c8a1..4d6a3ed43 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Emeraude Emerald Ore=Minerai d'Emeraude Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Le minerai d'émeraude produit des émeraudes. Il est très rare et peut être trouvé seul, pas en filons. -Emeralds are used for trading with villagers.=Les émeraudes ne sont pas très utiles seules, mais elles peuvent être échangées contre des lingots d'or. +Emeralds are used in villager trades as currency.=Les émeraudes ne sont pas très utiles seules, mais elles peuvent être échangées contre des lingots d'or. Flint=Silex Flint is a raw material.=Le silex est une matière première. Flowing Lava=Lave qui coule diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr index 90a75f810..f8dbbde6b 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Szmaragd Emerald Ore=Ruda szmaragdu Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Ruda szmaragdu jest bardzo rzadka i występuje samotnie, nie w grupach. -Emeralds are used for trading with villagers.=Szmaragdy nie są zbyt użyteczne same w sobie, ale można z nich wytworzyć sztabki złota. +Emeralds are used in villager trades as currency.=Szmaragdy nie są zbyt użyteczne same w sobie, ale można z nich wytworzyć sztabki złota. Flint=Krzemień Flint is a raw material.=Krzemień jest surowym materiałem. Flowing Lava=Płynąca lawa diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr index 07236037b..ad9d863b2 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Изумруд Emerald Ore=Изумрудная руда Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Изумрудная руда встречается очень редко и всегда по одному блоку. -Emeralds are used for trading with villagers.=Изумруды не очень полезны сами по себе, но их можно обменять на золотые слитки. +Emeralds are used in villager trades as currency.=Изумруды не очень полезны сами по себе, но их можно обменять на золотые слитки. Flint=Кремень Flint is a raw material.=Кремень это необработанный материал. Flowing Lava=Текущая лава diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index 1e8ee04ce..19d156711 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald= Emerald Ore= Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.= -Emeralds are used for trading with villagers.= +Emeralds are used in villager trades as currency.= Flint= Flint is a raw material.= Flowing Lava= From b5f7ae54583197b55bb5e8f5f81a6605fa4f74e8 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 20 Jul 2021 15:47:26 +0200 Subject: [PATCH 020/271] working implementation + support of other mods --- mods/ENTITIES/mcl_boats/init.lua | 2 +- mods/ENTITIES/mcl_boats/mod.conf | 2 +- mods/ENTITIES/mcl_minecarts/init.lua | 2 +- mods/ENTITIES/mcl_minecarts/mod.conf | 2 +- mods/HUD/mcl_title/init.lua | 5 ++--- mods/ITEMS/mcl_beds/functions.lua | 2 +- 6 files changed, 7 insertions(+), 8 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 76ace7a45..e81e9ffc5 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -84,7 +84,7 @@ local function attach_object(self, obj) end end, name) obj:set_look_horizontal(yaw) - mcl_tmp_message.message(obj, S("Sneak to dismount")) + mcl_title.set(obj, "actionbar", {text=S("Sneak to dismount"), color="white", stay=3}) else obj:get_luaentity()._old_visual_size = visual_size end diff --git a/mods/ENTITIES/mcl_boats/mod.conf b/mods/ENTITIES/mcl_boats/mod.conf index a5d6cc8cb..61463b6ec 100644 --- a/mods/ENTITIES/mcl_boats/mod.conf +++ b/mods/ENTITIES/mcl_boats/mod.conf @@ -1,7 +1,7 @@ name = mcl_boats author = PilzAdam description = Adds drivable boats. -depends = mcl_player, flowlib +depends = mcl_player, flowlib, mcl_title optional_depends = mcl_core, doc_identifier diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index e33e120a1..a76ab538a 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -646,7 +646,7 @@ register_minecart( if player then mcl_player.player_set_animation(player, "sit" , 30) player:set_eye_offset({x=0, y=-5.5, z=0},{x=0, y=-4, z=0}) - mcl_tmp_message.message(clicker, S("Sneak to dismount")) + mcl_title.set(clicker, "actionbar", {text=S("Sneak to dismount"), color="white", stay=3}) end end, name) end diff --git a/mods/ENTITIES/mcl_minecarts/mod.conf b/mods/ENTITIES/mcl_minecarts/mod.conf index 9fff9175d..3b8ae5551 100644 --- a/mods/ENTITIES/mcl_minecarts/mod.conf +++ b/mods/ENTITIES/mcl_minecarts/mod.conf @@ -1,6 +1,6 @@ name = mcl_minecarts author = Krock description = Minecarts are vehicles to move players quickly on rails. -depends = mcl_explosions, mcl_core, mcl_sounds, mcl_player, mcl_achievements, mcl_chests, mcl_furnaces, mesecons_commandblock, mcl_hoppers, mcl_tnt, mesecons +depends = mcl_title, mcl_explosions, mcl_core, mcl_sounds, mcl_player, mcl_achievements, mcl_chests, mcl_furnaces, mesecons_commandblock, mcl_hoppers, mcl_tnt, mesecons optional_depends = doc_identifier, mcl_wip diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 48c3a909f..03fe17614 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -45,7 +45,7 @@ local player_params = {} minetest.register_on_joinplayer(function(player) local playername = player:get_player_name() - player_params[playername] = { + player_params[player] = { stay = gametick_to_secondes(mcl_title.defaults.stay), --fadeIn = gametick_to_secondes(mcl_title.defaults.fadein), --fadeOut = gametick_to_secondes(mcl_title.defaults.fadeout), @@ -127,14 +127,13 @@ function mcl_title.set(player, type, data) return false end - --TODO: enable this code then Fleckenstein's pr get merged (in about 5-6 years) + --TODO: enable this code then Fleckenstein's pr get merged (in about 5-6 years lol) --if data.bold == nil then data.bold = false end --if data.italic == nil then data.italic = false end player:hud_change(huds_idx[type][player], "text", data.text) player:hud_change(huds_idx[type][player], "number", hex_color) - hud_hide_timeouts[type][player:get_player_name()] = data.stay or mcl_title.params_get(player).stay return true end diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index dc9afe2ba..f323ca4c7 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -330,7 +330,7 @@ function mcl_beds.on_rightclick(pos, player, is_top) message = select(2, lay_down(player, ppos, other)) end if message then - mcl_tmp_message.message(player, message) + mcl_title.set(player, "actionbar", {text=message, color="white", stay=3}) end else lay_down(player, nil, nil, false) From c31c852a6ea63eb2ffed49089881866fb59df0ed Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 20 Jul 2021 16:14:34 +0200 Subject: [PATCH 021/271] add documentation --- mods/ENTITIES/mcl_boats/init.lua | 2 +- mods/ENTITIES/mcl_minecarts/init.lua | 2 +- mods/HUD/mcl_title/API.md | 42 ++++++++++++++++++++++++++++ mods/HUD/mcl_title/init.lua | 2 +- mods/ITEMS/mcl_beds/functions.lua | 2 +- 5 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 mods/HUD/mcl_title/API.md diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index e81e9ffc5..311b07882 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -84,7 +84,7 @@ local function attach_object(self, obj) end end, name) obj:set_look_horizontal(yaw) - mcl_title.set(obj, "actionbar", {text=S("Sneak to dismount"), color="white", stay=3}) + mcl_title.set(obj, "actionbar", {text=S("Sneak to dismount"), color="white", stay=60}) else obj:get_luaentity()._old_visual_size = visual_size end diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index a76ab538a..4d3873cc2 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -646,7 +646,7 @@ register_minecart( if player then mcl_player.player_set_animation(player, "sit" , 30) player:set_eye_offset({x=0, y=-5.5, z=0},{x=0, y=-4, z=0}) - mcl_title.set(clicker, "actionbar", {text=S("Sneak to dismount"), color="white", stay=3}) + mcl_title.set(clicker, "actionbar", {text=S("Sneak to dismount"), color="white", stay=60}) end end, name) end diff --git a/mods/HUD/mcl_title/API.md b/mods/HUD/mcl_title/API.md new file mode 100644 index 000000000..50614be4f --- /dev/null +++ b/mods/HUD/mcl_title/API.md @@ -0,0 +1,42 @@ +# mcl_title + +Allow mods to show messages in the hud of players. + +## mcl_title.set(player, type, data) + +Show a hud message of `type` to player `player` with `data` as params. + +The element will stay for the per-player param `stay` or `data.stay` (in gametick which is 1/20 second). + +Here is a usage exemple: + +```lua +--show a title in the HUD with minecraft color "gold" +mcl_title.set(player, "title", {text="dummy text", color="gold"}) + +--show a subtitle in the HUD with hex color "#612D2D" +mcl_title.set(player, "subtitle", {text="dummy subtitle", color="#612D2D"}) + +--show an actionbar in the HUD (above the hotbar) with minecraft color "red" +mcl_title.set(player, "subtitle", {text="dummy actionbar", color="red"}) + +--show a title in the HUD with minecraft color "gold" staying for 3 seconds (override stay setting) +mcl_title.set(player, "title", {text="dummy text", color="gold", stay=3}) +``` + +## mcl_title.remove(player, type) + +Hide HUD element of type `type` for player `player`. + +## mcl_title.clear(player) + +Remove every title/subtitle/actionbar from a player. +Basicaly run `mcl_title.remove(player, type)` for every type. + +## mcl_title.params_set(player, params) + +Allow mods to set `stay` and upcomming `fadeIn`/`fadeOut` params. + +```lua +mcl_title.params_set(player, {stay = 600}) --elements with no 'data.stay' field will stay during 30s (600/20) +``` \ No newline at end of file diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 03fe17614..d1dbece4b 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -134,7 +134,7 @@ function mcl_title.set(player, type, data) player:hud_change(huds_idx[type][player], "text", data.text) player:hud_change(huds_idx[type][player], "number", hex_color) - hud_hide_timeouts[type][player:get_player_name()] = data.stay or mcl_title.params_get(player).stay + hud_hide_timeouts[type][player:get_player_name()] = gametick_to_secondes(data.stay) or mcl_title.params_get(player).stay return true end diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index f323ca4c7..e196f69ad 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -330,7 +330,7 @@ function mcl_beds.on_rightclick(pos, player, is_top) message = select(2, lay_down(player, ppos, other)) end if message then - mcl_title.set(player, "actionbar", {text=message, color="white", stay=3}) + mcl_title.set(player, "actionbar", {text=message, color="white", stay=60}) end else lay_down(player, nil, nil, false) From 75b425ffd77b85ba3081ddf2e47f8b6695ec8fa5 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 23 Jul 2021 12:23:30 +0000 Subject: [PATCH 022/271] Fix #1842 make other mods not using "mineclone" name space for item ids --- mods/HELP/mcl_item_id/init.lua | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index 3b3128f26..50247a858 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -1,4 +1,5 @@ local game = "mineclone" +local mcl_mods = {} local same_id = { heads = { "skeleton", "zombie", "creeper", "wither_skeleton" }, @@ -10,17 +11,34 @@ local same_id = { "stonebrick", "stonebrickmossy", }, wool = { - "black", "blue", "brown", "cyan", "green", + "black", "blue", "brown", "cyan", "green", "grey", "light_blue", "lime", "magenta", "orange", "pink", "purple", "red", "silver", "white", "yellow", }, } +local worldmt = io.open(minetest.get_worldpath() .. "/world.mt", "r") +local gameid = worldmt:read("*a"):match("gameid%s*=%s*(%S+)\n") +worldmt:close() + +for _, mod in pairs(minetest.get_modnames()) do + if minetest.get_modpath(mod):match("/games/" .. gameid .. "/") then + table.insert(mcl_mods, mod) + end +end + +local function item_id(id) + if minetest.settings:get_bool("mcl_item_id_debug", false) then + return id, "#555555" + end +end + tt.register_snippet(function(itemstring) local def = minetest.registered_items[itemstring] local desc = def.description local item_split = itemstring:find(":") local new_id = game .. itemstring:sub(item_split) + local mcl_mod = itemstring:sub(1, item_split) for mod, ids in pairs(same_id) do for _, id in pairs(ids) do if itemstring == "mcl_" .. mod .. ":" .. id then @@ -28,12 +46,15 @@ tt.register_snippet(function(itemstring) end end end - if new_id ~= game .. ":book_enchanted" then - minetest.register_alias_force(new_id, itemstring) - end - if minetest.settings:get_bool("mcl_item_id_debug", false) then - return new_id, "#555555" + for _, modname in pairs(mcl_mods) do + if modname .. ":" == mcl_mod then + if new_id ~= game .. ":book_enchanted" and new_id ~= itemstring then + minetest.register_alias_force(new_id, itemstring) + end + return item_id(new_id) + end end + return item_id(itemstring) end) minetest.register_alias_force(game .. ":book_enchanted", "mcl_enchanting:book_enchanted") From 09a68443cd641ed73631cc076916616e518402ea Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 23 Jul 2021 16:12:43 +0000 Subject: [PATCH 023/271] Better fix for #1842 (make other mods not using "mineclone" name space for item ids) --- mods/HELP/mcl_item_id/init.lua | 57 ++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index 50247a858..4e9c7c9f1 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -1,5 +1,20 @@ +mcl_item_id = {} + local game = "mineclone" -local mcl_mods = {} + +function mcl_item_id.set_mod_namespace(modname, namespace) + local namespace = namespace or modname + mcl_item_id[modname .. "_namespace"] = namespace +end + +function mcl_item_id.get_mod_namespace(modname) + local namespace = mcl_item_id[modname .. "_namespace"] + if namespace then + return namespace + else + return "" + end +end local same_id = { heads = { "skeleton", "zombie", "creeper", "wither_skeleton" }, @@ -17,28 +32,15 @@ local same_id = { }, } -local worldmt = io.open(minetest.get_worldpath() .. "/world.mt", "r") -local gameid = worldmt:read("*a"):match("gameid%s*=%s*(%S+)\n") -worldmt:close() - -for _, mod in pairs(minetest.get_modnames()) do - if minetest.get_modpath(mod):match("/games/" .. gameid .. "/") then - table.insert(mcl_mods, mod) - end -end - -local function item_id(id) - if minetest.settings:get_bool("mcl_item_id_debug", false) then - return id, "#555555" - end -end - tt.register_snippet(function(itemstring) local def = minetest.registered_items[itemstring] local desc = def.description local item_split = itemstring:find(":") - local new_id = game .. itemstring:sub(item_split) - local mcl_mod = itemstring:sub(1, item_split) + local id_part1 = itemstring:sub(1, item_split) + local id_part2 = itemstring:sub(item_split) + local modname = id_part1:gsub("%:", "") + local new_id = game .. id_part2 + local mod_namespace = mcl_item_id.get_mod_namespace(modname) for mod, ids in pairs(same_id) do for _, id in pairs(ids) do if itemstring == "mcl_" .. mod .. ":" .. id then @@ -46,15 +48,16 @@ tt.register_snippet(function(itemstring) end end end - for _, modname in pairs(mcl_mods) do - if modname .. ":" == mcl_mod then - if new_id ~= game .. ":book_enchanted" and new_id ~= itemstring then - minetest.register_alias_force(new_id, itemstring) - end - return item_id(new_id) - end + + if mod_namespace then + new_id = mod_namespace .. id_part2 + end + if new_id ~= game .. ":book_enchanted" then + minetest.register_alias_force(new_id, itemstring) + end + if minetest.settings:get_bool("mcl_item_id_debug", false) then + return new_id, "#555555" end - return item_id(itemstring) end) minetest.register_alias_force(game .. ":book_enchanted", "mcl_enchanting:book_enchanted") From e44e9eaf623809bc2fa4c617dd6e9629aa5b3879 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 23 Jul 2021 21:35:10 +0000 Subject: [PATCH 024/271] Fix typo --- mods/HELP/mcl_item_id/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index 4e9c7c9f1..911d8225b 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -12,7 +12,7 @@ function mcl_item_id.get_mod_namespace(modname) if namespace then return namespace else - return "" + return end end From c05e57efb1f3d55c89354c28a84e76abe63aadd5 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 24 Jul 2021 14:09:47 +0000 Subject: [PATCH 025/271] Fix some crashes with set_mod_namespace and bugs --- mods/HELP/mcl_item_id/init.lua | 46 +++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index 911d8225b..9a2f926e8 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -1,22 +1,38 @@ -mcl_item_id = {} +mcl_item_id = { + mod_namespaces = {}, +} local game = "mineclone" function mcl_item_id.set_mod_namespace(modname, namespace) local namespace = namespace or modname - mcl_item_id[modname .. "_namespace"] = namespace + mcl_item_id.mod_namespaces[modname] = namespace + minetest.register_on_mods_loaded(function() + for item, def in pairs(minetest.registered_items) do + local item_split = item:find(":") + if item_split then + local id_modname = item:sub(1, item_split - 1) + local id_string = item:sub(item_split) + if id_modname == modname then + minetest.register_alias_force(namespace .. id_string, item) + end + end + end + end) end function mcl_item_id.get_mod_namespace(modname) - local namespace = mcl_item_id[modname .. "_namespace"] + local namespace = mcl_item_id.mod_namespaces[modname] if namespace then return namespace else - return + return game end end local same_id = { + enchanting = { "table" }, + experience = { "bottle" }, heads = { "skeleton", "zombie", "creeper", "wither_skeleton" }, mobitems = { "rabbit", "chicken" }, walls = { @@ -34,13 +50,11 @@ local same_id = { tt.register_snippet(function(itemstring) local def = minetest.registered_items[itemstring] - local desc = def.description local item_split = itemstring:find(":") - local id_part1 = itemstring:sub(1, item_split) - local id_part2 = itemstring:sub(item_split) - local modname = id_part1:gsub("%:", "") - local new_id = game .. id_part2 - local mod_namespace = mcl_item_id.get_mod_namespace(modname) + local id_string = itemstring:sub(item_split) + local id_modname = itemstring:sub(1, item_split - 1) + local new_id = game .. id_string + local mod_namespace = mcl_item_id.get_mod_namespace(id_modname) for mod, ids in pairs(same_id) do for _, id in pairs(ids) do if itemstring == "mcl_" .. mod .. ":" .. id then @@ -48,16 +62,12 @@ tt.register_snippet(function(itemstring) end end end - - if mod_namespace then - new_id = mod_namespace .. id_part2 - end - if new_id ~= game .. ":book_enchanted" then + if mod_namespace ~= game then + new_id = mod_namespace .. id_string + else minetest.register_alias_force(new_id, itemstring) end if minetest.settings:get_bool("mcl_item_id_debug", false) then return new_id, "#555555" end -end) - -minetest.register_alias_force(game .. ":book_enchanted", "mcl_enchanting:book_enchanted") +end) \ No newline at end of file From 65d33b935ab23e6a43b069c62124d51ead05c165 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 24 Jul 2021 14:45:55 +0000 Subject: [PATCH 026/271] Add API-md for `mcl_item_id` --- mods/HELP/mcl_item_id/API.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 mods/HELP/mcl_item_id/API.md diff --git a/mods/HELP/mcl_item_id/API.md b/mods/HELP/mcl_item_id/API.md new file mode 100644 index 000000000..a2f244e0c --- /dev/null +++ b/mods/HELP/mcl_item_id/API.md @@ -0,0 +1,24 @@ +# mcl_item_id +Show the item ID of an item in the description. +With this API, you can register a different name space than "mineclone" for your mod. + +## mcl_item_id.set_mod_namespace(modname, namespace) +Set a name space for all items in a mod. + +* param1: the modname +* param2: (optional) string of the desired name space, if nil, it is the name of the mod + +## mcl_item_id.get_mod_namespace(modname) +Get the name space of a mod registered with mcl_item_id.set_mod_namespace(modname, namespace). + +* param1: the modname + +### Examples: + +The name of the mod is "mod" which registered an item called "mod:itemname". + +* mcl_item_id.set_mod_namespace("mod", "mymod") will show "mymod:itemname" in the description of "mod:itemname" +* mcl_item_id.set_mod_namespace(minetest.get_current_modname()) will show "mod:itemname" in the description of "mod:itemname" +* mcl_item_id.get_mod_namespace(minetest.get_current_modname()) will return "mod" + +(If no namespace is set by a mod, mcl_item_id.get_mod_namespace(minetest.get_current_modname()) will return "mineclone") From 5c5c405ccf92762af6f0757d4a3b015ff14d0d37 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 24 Jul 2021 15:19:10 +0000 Subject: [PATCH 027/271] Add missing check --- mods/HELP/mcl_item_id/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index 9a2f926e8..e6df1af03 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -13,7 +13,7 @@ function mcl_item_id.set_mod_namespace(modname, namespace) if item_split then local id_modname = item:sub(1, item_split - 1) local id_string = item:sub(item_split) - if id_modname == modname then + if id_modname == modname and modname ~= namespace then minetest.register_alias_force(namespace .. id_string, item) end end From 4846076c8fc2555dff12bf148c5b1d83ab39ec9d Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 24 Jul 2021 19:07:44 +0000 Subject: [PATCH 028/271] `mcl_item_id` simplify code --- mods/HELP/mcl_item_id/init.lua | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/mods/HELP/mcl_item_id/init.lua b/mods/HELP/mcl_item_id/init.lua index e6df1af03..f3e6d2735 100644 --- a/mods/HELP/mcl_item_id/init.lua +++ b/mods/HELP/mcl_item_id/init.lua @@ -7,18 +7,6 @@ local game = "mineclone" function mcl_item_id.set_mod_namespace(modname, namespace) local namespace = namespace or modname mcl_item_id.mod_namespaces[modname] = namespace - minetest.register_on_mods_loaded(function() - for item, def in pairs(minetest.registered_items) do - local item_split = item:find(":") - if item_split then - local id_modname = item:sub(1, item_split - 1) - local id_string = item:sub(item_split) - if id_modname == modname and modname ~= namespace then - minetest.register_alias_force(namespace .. id_string, item) - end - end - end - end) end function mcl_item_id.get_mod_namespace(modname) @@ -64,7 +52,8 @@ tt.register_snippet(function(itemstring) end if mod_namespace ~= game then new_id = mod_namespace .. id_string - else + end + if mod_namespace ~= id_modname then minetest.register_alias_force(new_id, itemstring) end if minetest.settings:get_bool("mcl_item_id_debug", false) then From b4b33cb4a547634b3c46e70e74e0e9c8b7a8c831 Mon Sep 17 00:00:00 2001 From: Emojigit <55009343+Emojigit@users.noreply.github.com> Date: Tue, 27 Jul 2021 19:26:25 +0800 Subject: [PATCH 029/271] [mcl_nether_gold] Kick it. Bye mcl_nether_gold! --- mods/ITEMS/mcl_nether_gold/LICENSE | 674 ------------------ mods/ITEMS/mcl_nether_gold/README.md | 3 - mods/ITEMS/mcl_nether_gold/depends.txt | 3 - mods/ITEMS/mcl_nether_gold/description.txt | 1 - mods/ITEMS/mcl_nether_gold/init.lua | 53 -- mods/ITEMS/mcl_nether_gold/mod.conf | 1 - mods/ITEMS/mcl_nether_gold/screenshot.png | Bin 595157 -> 0 bytes .../textures/mcl_nether_gold_ore.png | Bin 2340 -> 0 bytes 8 files changed, 735 deletions(-) delete mode 100644 mods/ITEMS/mcl_nether_gold/LICENSE delete mode 100644 mods/ITEMS/mcl_nether_gold/README.md delete mode 100644 mods/ITEMS/mcl_nether_gold/depends.txt delete mode 100644 mods/ITEMS/mcl_nether_gold/description.txt delete mode 100644 mods/ITEMS/mcl_nether_gold/init.lua delete mode 100644 mods/ITEMS/mcl_nether_gold/mod.conf delete mode 100644 mods/ITEMS/mcl_nether_gold/screenshot.png delete mode 100644 mods/ITEMS/mcl_nether_gold/textures/mcl_nether_gold_ore.png diff --git a/mods/ITEMS/mcl_nether_gold/LICENSE b/mods/ITEMS/mcl_nether_gold/LICENSE deleted file mode 100644 index e72bfddab..000000000 --- a/mods/ITEMS/mcl_nether_gold/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. \ No newline at end of file diff --git a/mods/ITEMS/mcl_nether_gold/README.md b/mods/ITEMS/mcl_nether_gold/README.md deleted file mode 100644 index 928816fa0..000000000 --- a/mods/ITEMS/mcl_nether_gold/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# mcl_nether_gold -### by NO11 -You need the Minetest subgame "Mineclone 2" to use the mod. \ No newline at end of file diff --git a/mods/ITEMS/mcl_nether_gold/depends.txt b/mods/ITEMS/mcl_nether_gold/depends.txt deleted file mode 100644 index e504fcdd8..000000000 --- a/mods/ITEMS/mcl_nether_gold/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -mcl_core -mcl_sounds -mcl_nether \ No newline at end of file diff --git a/mods/ITEMS/mcl_nether_gold/description.txt b/mods/ITEMS/mcl_nether_gold/description.txt deleted file mode 100644 index e63ef43c4..000000000 --- a/mods/ITEMS/mcl_nether_gold/description.txt +++ /dev/null @@ -1 +0,0 @@ -Adds Nether Gold Ore \ No newline at end of file diff --git a/mods/ITEMS/mcl_nether_gold/init.lua b/mods/ITEMS/mcl_nether_gold/init.lua deleted file mode 100644 index c86f46211..000000000 --- a/mods/ITEMS/mcl_nether_gold/init.lua +++ /dev/null @@ -1,53 +0,0 @@ -minetest.register_node("mcl_nether_gold:nether_gold_ore", { - description = ("Nether Gold Ore"), - _doc_items_longdesc = ("Nether gold ore is an ore containing nether gold. It is commonly found around netherrack in the Nether."), - stack_max = 64, - tiles = {"mcl_nether_netherrack.png^mcl_nether_gold_ore.png"}, - is_ground_content = true, - groups = {pickaxey=1, building_block=1, material_stone=1, xp=0}, - drop = { - max_items = 1, - items = { - {items = {'mcl_core:gold_nugget 6'},rarity = 5}, - {items = {'mcl_core:gold_nugget 5'},rarity = 5}, - {items = {'mcl_core:gold_nugget 4'},rarity = 5}, - {items = {'mcl_core:gold_nugget 3'},rarity = 5}, - {items = {'mcl_core:gold_nugget 2'}}, - } - }, - sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 3, - _mcl_hardness = 3, - _mcl_silk_touch_drop = true, - _mcl_fortune_drop = mcl_core.fortune_drop_ore -}) - -minetest.register_craft({ - type = "cooking", - output = 'mcl_core:gold_ingot', - recipe = 'mcl_nether_gold:nether_gold_ore', - cooktime = 10, -}) - -if minetest.settings:get_bool("mcl_generate_ores", true) then - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_nether_gold:nether_gold_ore", - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - clust_scarcity = 850, - clust_num_ores = 4, -- MC cluster amount: 4-10 - clust_size = 3, - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_nether_max, - }) - minetest.register_ore({ - ore_type = "scatter", - ore = "mcl_nether_gold:nether_gold_ore", - wherein = {"mcl_nether:netherrack", "mcl_core:stone"}, - clust_scarcity = 1650, - clust_num_ores = 8, -- MC cluster amount: 4-10 - clust_size = 4, - y_min = mcl_vars.mg_nether_min, - y_max = mcl_vars.mg_nether_max, - }) -end \ No newline at end of file diff --git a/mods/ITEMS/mcl_nether_gold/mod.conf b/mods/ITEMS/mcl_nether_gold/mod.conf deleted file mode 100644 index 8ee4241e8..000000000 --- a/mods/ITEMS/mcl_nether_gold/mod.conf +++ /dev/null @@ -1 +0,0 @@ -name = mcl_nether_gold \ No newline at end of file diff --git a/mods/ITEMS/mcl_nether_gold/screenshot.png b/mods/ITEMS/mcl_nether_gold/screenshot.png deleted file mode 100644 index ee9cac199ba477927a5d2d25e79a2c2c7d1aee9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 595157 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%0D}?Y&G(yT9c0 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

|l7wlKgZ5kE6156e#7?xM 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 z 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 Vgech;cAVh&n3 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�yS*+`z_Wr@{E6H=vmI{rj0-=)=he{Z^7m!o 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 z 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�-H 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 diff --git a/mods/ITEMS/mcl_nether_gold/textures/mcl_nether_gold_ore.png b/mods/ITEMS/mcl_nether_gold/textures/mcl_nether_gold_ore.png deleted file mode 100644 index 9b621e586be904498caae1df3e8f6245cb7a829b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2340 zcmV+<3ETFGP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bvvcx6~{O1%o0wA#+hqWp<$nnz{fj!H6m83GR z88DWG=x!uN^}qfc>JNOZ4PLPe(I@XUKAbq&j84?+vs$D1`js2KJ1^tvJg^udw6t!0 z7yFEHcfSx=#>?xt3RV0>akM>)Lz**Nbi^)-BeHAU$h}JPUgpPgH z7|p>SS!FvJ()f*Y7Mfo}87<-0QiPEqzWQ^7DSXFHo$ecWr}u`P&N5D~P$=!iz`tQ6 zq@vH zmRP}91Dgd`RVEn=w1;8SOg6*xtF5LYM7G@qwANN|FvlVVn{1^;0WLFaphQhk1RoWw z5r*xF#a#2IYrbkCW^M+S*1(y;8y}bYHuztz<7kX2U1M}SSRpPuHH|PPbMqHgAjAy8 z)Lr;qmwM<%KZqqT=q{Ke7MOKeE{Zd^w&>!SVCOU|y|#u4O&kCs%*7BFC(v(2ahZiqa{!EV6Zcqf?4);ha}ky=26BToU;B+4L**+D;n zBQ%s9Iaba&?}Cdix$Mcaci#KpXO7B&0tXj-2qA_Pa-_)7MIS?qF~yv0BBU^vd$sA2mz--2qfrIx$tkW%OF zy6>UKo_Ze8+MvP14L`z&BaM7m6INeYGjGiO&YBU{CS!crg_|`Dhp=6knNHl~42)Se zU_49)AZR-|)6p>7$=u{jr%8rX2q(-t14zsY%`c z!JL}Z33H#kePONTtD?|F(Ar$6Ir2nN1%_)xKGnJ`hJ#Idv975wO zqEOQli|AGyO~R~}03$^z`Kb@<~d!gmSm>yEsdnGybmc$ZA0lWJgXj6G8 zRnkK--9yyYNQrO8$D)Ztgqb%2IM)0U?-gz*0S>S=&k{VFnvWVGM)g!-ksUy$eZj-$ z6>2;*+%`<=_W#o^_}C4P&2YEsnF?km=pwMr)U3WB1rS))>L^bX}Y*-zf;<^&yBH!Qi%SK@og<3^}9)T_ZCfYAaG_{@BkUgE` z?H(#ltQ^-}oi&51k?0DRS~k8}cXu%IePPr+3ejg~t@XrUxJf{XA0=Y9!z(M1FxS{5 z5MYuByG|YrXyU*k9URDBfl?DGmi*VW6IUtra^k*eyXEvG`7%_n{3L<0Ii-%{$g+fC z>j1LdXVIMlnWA!aud}B$U&2{DCD{&G?Krh0ehb*{4B6({erw6w1AgsQHba7tViUk( z)KBgAB5x?j_&NVO9sjgkYPDk-ETs&Gair|-#HyiI<)>n=B8QC?KX4jtrW+4z4mpdfn`$cO7dxlcnffJ6Pn-{`z0nYbX0>?HkTR)5)J_ln*FS8qZ*siM|L zdVFxv%F$$cY?-XQ90zd3OnX}(T(g%E`!2WE{8}J4ST9(eZF)wGn58?ujxBj)n$;I3 zJ{b8v$!iK%JBQ<6=0Ks>>TlQyOu)z}AZY*q00v@9M??U^0Bisb%;O)200009a7bBm z001r{001r{0eGc9b^rhX2XskIMF-^r91IsPaC-910007WNkl$)H=WTKk_D%9}C3tGIOymO3d)rcJ^6 zcs9r9cOMc|GnJ-1xV@}PoixylC=>~)x*$(hcY2&Nl*&K71pC*V3)=#XvWg@ec z=kt2@^dN&KM4n6zCoc3=lE$_wTPC6~dq4M+ahSfgEqRmSul*q%Cq)-Pw|^B6q#Z(ps~ks3CT)}Hx2kf4 Date: Wed, 28 Jul 2021 04:53:37 +0000 Subject: [PATCH 030/271] MineClone5 is not a direct continue of MIneClone, MineClone2 instead --- LEGAL.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/LEGAL.md b/LEGAL.md index f0920efe0..075bb4534 100644 --- a/LEGAL.md +++ b/LEGAL.md @@ -24,8 +24,7 @@ text files a different license. This counts as dual-licensing. You can choose which license applies to you: Either the license of MineClone 5 (GNU GPLv3) or the mod's license. -MineClone 5 is a direct continuation of the discontinued MineClone -project by davedevils. +MineClone5 is a fork of MineClone2 that uses a different workflow to includes features after Minecaft 1.12. Mod credits: See `README.txt` or `README.md` in each mod directory for information about other authors. From 6db904b5f817db652a6a73289538b5fa389333e1 Mon Sep 17 00:00:00 2001 From: Emojigit Date: Wed, 28 Jul 2021 04:54:32 +0000 Subject: [PATCH 031/271] \n --- LEGAL.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/LEGAL.md b/LEGAL.md index 075bb4534..bd05057c3 100644 --- a/LEGAL.md +++ b/LEGAL.md @@ -24,7 +24,8 @@ text files a different license. This counts as dual-licensing. You can choose which license applies to you: Either the license of MineClone 5 (GNU GPLv3) or the mod's license. -MineClone5 is a fork of MineClone2 that uses a different workflow to includes features after Minecaft 1.12. +MineClone5 is a fork of MineClone2 that uses a different workflow +to includes features after Minecaft 1.12. Mod credits: See `README.txt` or `README.md` in each mod directory for information about other authors. From fe35e10b9900e5e41d098b0caace830413d0c22b Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 28 Jul 2021 20:11:37 +0400 Subject: [PATCH 032/271] Add Nether Gold compatibility alias --- mods/ITEMS/mcl_blackstone/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ITEMS/mcl_blackstone/init.lua b/mods/ITEMS/mcl_blackstone/init.lua index badcf99e4..510726dda 100644 --- a/mods/ITEMS/mcl_blackstone/init.lua +++ b/mods/ITEMS/mcl_blackstone/init.lua @@ -96,6 +96,8 @@ minetest.register_node("mcl_blackstone:nether_gold", { _mcl_silk_touch_drop = true, _mcl_fortune_drop = mcl_core.fortune_drop_ore, }) +-- Compatibility with Nether Gold mod by NO11: +minetest.register_alias("mcl_nether_gold:nether_gold_ore", "mcl_blackstone:nether_gold") minetest.register_node("mcl_blackstone:basalt_polished", { description = S("Polished Basalt"), From 4aabd7d9e721a860864157ac5145985d8a2360b9 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 1 Aug 2021 12:10:00 +0000 Subject: [PATCH 033/271] Make size/position of potion HUD more MC like --- mods/ITEMS/mcl_potions/functions.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 09b95115a..c3b034b66 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -35,13 +35,13 @@ local function potions_init_icons(player) local name = player:get_player_name() icon_ids[name] = {} for e=1, EFFECT_TYPES do - local x = -7 + -38 * e + local x = -52 * e - 2 local id = player:hud_add({ hud_elem_type = "image", text = "blank.png", position = { x = 1, y = 0 }, - offset = { x = x, y = 272 }, - scale = { x = 2, y = 2 }, + offset = { x = x, y = 3 }, + scale = { x = 3, y = 3 }, alignment = { x = 1, y = 1 }, z_index = 100, }) From 5c563d6ffd16ba6d64691fff5e0356b85eb4fe80 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 2 Aug 2021 12:24:34 +0000 Subject: [PATCH 034/271] Make eating particles much more MC like! --- mods/PLAYER/mcl_hunger/hunger.lua | 32 ++++++++++++------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/hunger.lua b/mods/PLAYER/mcl_hunger/hunger.lua index 5dec8b1b0..d9a6fd5fe 100644 --- a/mods/PLAYER/mcl_hunger/hunger.lua +++ b/mods/PLAYER/mcl_hunger/hunger.lua @@ -152,26 +152,18 @@ function mcl_hunger.item_eat(hunger_change, replace_with_item, poisontime, poiso -- If false, force item to not spawn any food partiles when eaten if def._food_particles ~= false and texture and texture ~= "" then local v = user:get_velocity() or user:get_player_velocity() - local minvel = vector.add(v, {x=-1, y=1, z=-1}) - local maxvel = vector.add(v, {x=1, y=2, z=1}) - - minetest.add_particlespawner({ - amount = math.min(math.max(8, hunger_change*2), 25), - time = 0.1, - minpos = {x=pos.x, y=pos.y, z=pos.z}, - maxpos = {x=pos.x, y=pos.y, z=pos.z}, - minvel = minvel, - maxvel = maxvel, - minacc = {x=0, y=-5, z=0}, - maxacc = {x=0, y=-9, z=0}, - minexptime = 1, - maxexptime = 1, - minsize = 1, - maxsize = 2, - collisiondetection = true, - vertical = false, - texture = texture, - }) + for i = 0, math.min(math.max(8, hunger_change*2), 25) do + minetest.add_particle({ + pos = { x = pos.x, y = pos.y, z = pos.z }, + velocity = vector.add(v, { x = math.random(-1, 1), y = math.random(1, 2), z = math.random(-1, 1) }), + acceleration = { x = 0, y = math.random(-9, -5), z = 0 }, + expirationtime = 1, + size = math.random(1, 2), + collisiondetection = true, + vertical = false, + texture = "[combine:3x3:" .. -i .. "," .. -i .. "=" .. texture, + }) + end end minetest.sound_play("mcl_hunger_bite", { max_hear_distance = 12, From df0c1f1dd1e32dc74a1b9e9a767037c517cdf071 Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 6 Aug 2021 11:14:17 +0200 Subject: [PATCH 035/271] Make bows and fishing rods show their durability in description (Fixes issue #1773) --- mods/HELP/mcl_tt/snippets_mcl.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mods/HELP/mcl_tt/snippets_mcl.lua b/mods/HELP/mcl_tt/snippets_mcl.lua index 3c79f52e8..121d8ed70 100644 --- a/mods/HELP/mcl_tt/snippets_mcl.lua +++ b/mods/HELP/mcl_tt/snippets_mcl.lua @@ -107,3 +107,8 @@ tt.register_snippet(function(itemstring) end end) +tt.register_snippet(function(itemstring, _, itemstack) + if itemstring:sub(1, 23) == "mcl_fishing:fishing_rod" or itemstring:sub(1, 12) == "mcl_bows:bow" then + return S("Durability: @1 uses", mcl_util.calculate_durability(itemstack or ItemStack(itemstring))) + end +end) From 5bb57a81ad46c163b58da046920b8a4bee18b30b Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 6 Aug 2021 11:55:27 +0200 Subject: [PATCH 036/271] Add durability tooltip to translation template --- mods/HELP/mcl_tt/locale/template.txt | 1 + mods/HELP/mcl_tt/snippets_mcl.lua | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/HELP/mcl_tt/locale/template.txt b/mods/HELP/mcl_tt/locale/template.txt index 1259216c7..6fb735b13 100644 --- a/mods/HELP/mcl_tt/locale/template.txt +++ b/mods/HELP/mcl_tt/locale/template.txt @@ -45,3 +45,4 @@ Mining durability: @1= Block breaking strength: @1= @1 uses= Unlimited uses= +Durability: @1= diff --git a/mods/HELP/mcl_tt/snippets_mcl.lua b/mods/HELP/mcl_tt/snippets_mcl.lua index 121d8ed70..825776f5f 100644 --- a/mods/HELP/mcl_tt/snippets_mcl.lua +++ b/mods/HELP/mcl_tt/snippets_mcl.lua @@ -109,6 +109,6 @@ end) tt.register_snippet(function(itemstring, _, itemstack) if itemstring:sub(1, 23) == "mcl_fishing:fishing_rod" or itemstring:sub(1, 12) == "mcl_bows:bow" then - return S("Durability: @1 uses", mcl_util.calculate_durability(itemstack or ItemStack(itemstring))) + return S("Durability: @1", S("@1 uses", mcl_util.calculate_durability(itemstack or ItemStack(itemstring)))) end end) From 664c2381374ee25f423d2b0d0eb66b838257eca6 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 6 Aug 2021 10:52:55 +0000 Subject: [PATCH 037/271] Add german translation for the bow/fishing rod desc --- mods/HELP/mcl_tt/locale/mcl_tt.de.tr | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/HELP/mcl_tt/locale/mcl_tt.de.tr b/mods/HELP/mcl_tt/locale/mcl_tt.de.tr index 8f878afc7..54c376c3b 100644 --- a/mods/HELP/mcl_tt/locale/mcl_tt.de.tr +++ b/mods/HELP/mcl_tt/locale/mcl_tt.de.tr @@ -45,3 +45,4 @@ Mining durability: @1=Grabehaltbarkeit: @1 Block breaking strength: @1=Blockbruchstärke: @1 @1 uses=@1 Verwendungen Unlimited uses=Unbegrenzte Verwendungen +Durability: @1=Haltbarkeit: @1 From f8dcf056707c917f2b77aead6669ee0d05905c86 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 11 Aug 2021 15:41:45 +0000 Subject: [PATCH 038/271] Add MC like nodebox for anvils --- mods/ITEMS/mcl_anvils/init.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index fbf6fb751..51b78da6f 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -297,9 +297,10 @@ local anvildef = { node_box = { type = "fixed", fixed = { - {-8/16, 2/16, -5/16, 8/16, 8/16, 5/16}, -- top - {-5/16, -4/16, -2/16, 5/16, 5/16, 2/16}, -- middle - {-8/16, -8/16, -5/16, 8/16, -4/16, 5/16}, -- base + { -6/16, -8/16, -6/16, 6/16, -4/16, 6/16 }, + { -5/16, -4/16, -4/16, 5/16, -3/16, 4/16 }, + { -4/16, -3/16, -2/16, 4/16, 2/16, 2/16 }, + { -8/16, 2/16, -5/16, 8/16, 8/16, 5/16 }, } }, sounds = mcl_sounds.node_sound_metal_defaults(), From cb55c36863b429a8328c98bc478d525d081727ca Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 11 Aug 2021 15:44:43 +0000 Subject: [PATCH 039/271] Correct the texture of anvils Because of the new node_nox, the textures have to be a little bit bigger. --- .../mcl_anvils_anvil_top_damaged_0.png | Bin 195 -> 6074 bytes .../mcl_anvils_anvil_top_damaged_1.png | Bin 209 -> 5855 bytes .../mcl_anvils_anvil_top_damaged_2.png | Bin 220 -> 5882 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/ITEMS/mcl_anvils/textures/mcl_anvils_anvil_top_damaged_0.png b/mods/ITEMS/mcl_anvils/textures/mcl_anvils_anvil_top_damaged_0.png index 84c64e9159abbd2703d701a32211caa4cc9b8418..43938aa7265afa58d0394ae683e7815a6159dc40 100644 GIT binary patch literal 6074 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 PuQ;wB&v&o)+~j`)mnpRX delta 163 zcmV;U09^myEztpxBL)B%P)t-slm8VMe;sF9xBvhE0d!JMQvg8b*k%9#0B1==K~#7F z9m~ND0zn8yVRmd_SutKmw*g}ZBrp|#Q-K{g{Tu$8}E3 za0gU)FPMq~VeUxoV_~1)8Mu6f0uhP5d4|=ssf}NuvD_28@-6qm<9r^S{_@Ka5oW~6 RhyMTo002ovPDHLkV1mc^K{fyY diff --git a/mods/ITEMS/mcl_anvils/textures/mcl_anvils_anvil_top_damaged_2.png b/mods/ITEMS/mcl_anvils/textures/mcl_anvils_anvil_top_damaged_2.png index 5f5cfbffa6f0ebd6c1fa06ad201cb312ca6875e0..096f65eac2203e52431aebcd73c473f68a690441 100644 GIT binary patch literal 5882 zcmeHLX;f3!77l|*DIzE$QHD#RRK<*BmN<|E5@d)>2GrIJH;|Hv+#3>I8LY5fn$1TCG+Dt)SwBfPkn-#fm(c)eEZw`d}r@{xMT`L z1Bcj+vO}RzLj-(oIP&di`dC{bzuRv&A`{jd=0%F&aIpc<>NIkN5(MC6EeL={g&c)4 z-q;r%bKu@M`<_;3$a;+9g+vjy#RlpTC^@U2>`6UQC*CTH8MZ!eT95hFWS?;9Pxrw zc`@g*Yu)eY1?ZvU^MAB;J&$r&;gLXd+U{yVTLE7+?5O`Pe3DNB&-32s@!F(wBdiU? z+Z#@<%2#$?*vbM@pDKUtOvx`hF#Fb2kFXAE;hmdDj>+5s{k2^!(b*%MeF6F}aSmm_ zU`5?c*@rXyyIh1{>Mx@W+xYgeteEdt6-G>I@gL+BtA0fC9qCAwRT#5puZX^TK6@i; zzBZ}?*l0O#$d2QZZKpMUw?^1$XMeUKm>7T^QRDjO+1|^-4s3HKEE0L)Jp{{$Hjs3Y zi|w|_Px%fDT2FkHG1JPXc>!~7hM@Hd*X5`#;a)Ct8BOS18MiO@hqV?{t?L)g&FNlK zipAdJ&zFZ;yIH*u5S_1!sxS6I?KozZhUc;zS&`p%j7fnV*txRi*$C|*PW`3 zSDy3KSn0-PI{9Eik6UNv6(nBGgsP5R?#ZLynfIh>zGuoGjFV_Zq!3sMV57qp!#v=ej3XA}fwkcjc4i{aQ?C)OQ%vTJWI_KuOf z+eV+3!K4;;pSqP_MiA|3Djk2LFk{<{C03CtVX83RE0NzMoYZ>t_Q9arb}6>sqf=uK&%6`cb+o zhi=odD!aybmTxIB{44fIDW>yE=0+zHd%@PCstEG1yS6|jf9k!16VN5BM*Fr|s~&6` zbKL>L`d`UOo%%0Z#f*d&%Zu&q3(|A{biqy`<&ilnnjOxa+di46$9z}D*!<-1XHn(H zi|Xz99e4Lc*(8?#DzCq6O*l)kP zdg0P;i$2^CY)=trt9Qi(VL-F{;q=TCb##*PQ$U{C4dmZdA zR^46Pl}#Cy`|`@DjVXo4>SrF@=e8zu{^pgZ4<3D9v#Yjahg17%Y}~VNOOrew`91yS zSz_;!OIHI@i)P*o99@Sln>FiI`u4IVh2>zv&Rxx6af=q6xxsR)bO_%SSZ~mbJycq2 z7<;yOawvIHKJ30mrEaekW7=cX*J5g}tv}$l;mF8mKFm2cuyf)fyqllj$-6&8lhwWR zc+RYqvAsdNQyaz(&3aJuEU0H`*Xg>4ch~ivYa&EMzOq99c&cM~WYi@T%3`sC!x0KN zoY!3n=}iUS=n1IRq08~%jj!_jvs{N}cRzW2r|GdfK=BEt&i6(|?LikA zgDYF2dG$U$_X8cpD+HA_!`sf-&;I2a+b`urR_Da$P+GRdSPl6Uc33s(cA=BTv08Z* zuIm2TD>~1)5o%1#!1H^~>FXNkRlJRZHlxYpqU1)$V$mbXk*t{W!pz;7*yZ2PD9_Q0 z8jhcd*;fgMv=dzU|G(LK=g(rIbpU_T0p@tSHkZVH}63minRCuvWBLVS7l@_^H zP$<7CMy*(y0K$L-j8mxDn2uv7F@QqG#>}LK5JR*aFkZo*rvoGAg+@x}B}kbv%#_J? zenu8TpaNkrU{op95X;EMn0Z;qvuT=u0n89MfsGM`2my{p2Lcp41y98BjEW>OX0jdN zr<2K9;oN|J3S`8_#KW+bMIaaq2E4%+uhGR3NK7V^KqM2$WE_IPLCI=ZY{aP{tcjwJ zg9}1Zok9yMG-|-aDVAvTFdKtG)`5OX*h zmP{j6$XMn_2}4e$5}8ySkw%r{C?q)<$Dqm>IGV56mqsT_X%ad(fJ&f-V6j>Xny3(R zyaM5&`GRr@oyx#bBqS=10+L8LrkF^=`I6*vI#WgkrHp|TVLAm;31a2Is7zEcgo;F@ zlgVvis4yEySdXix_sX>MXA5%J`{6`7P3fN+YD zbW^CraUemfjx(E>4u*wn2a#56st$zNJdf;##nFLcSfh*7Xq0S>DO$ipX)Y?jufJSa z!5XRA&Va5-|}c_cdi7iGd`tFVhz%0i|?b8ktIy zOQi3zLmD}35bMBcaYzmz=ZqAW`J91q{rNZkUA!S4G$j|2Ou`|3kVJ|k(OG0Bi%Q4z zoi^Y{Fm>41yY(~mppX#OKt23SJ&GkTC1QkLt5qsM-Mc!y&YS;&8(`m`qkm^U5Y}hS z(P)#ADvpQ44C)WMe-E&aAy^>=)sW^xp$~-g$ui&~LSpWlLoPVvz9hW4F#EH_R7n5e zPk;9PgB}p-Pfk8c-%oOVlIx=s_$ctF?D{0vM=9`8;7{50f0N7Z?JGB^M*i+IATQK~ zvCtjlW!ys;9LbyBlZHG}sZ=(bEf5GMPMqlF<%LG0y}i9XJUoQ28gR(61son4ftuQK z9r?#E%0eCH9CwNfSh@8U`i+~BD=C8?4c9(>Y$xwIR+E*5?@X->~ z*51?{#r>CgKkc@-HY)RriL<;f+U}62cXIA2I=2;EpW6YYZHmmKRk)R`ZOsuB*+e|( qY`XQ$7EUtyslzQI06`Itw>G2U3|B3qJG>4&{oe{YJX}30I~h72#wopEO5?EVYHwaDb65M)!CR*< z9gb4mW#r{_fM@!LBKHkbsw+DcJj9b-cSmb=9DH(1X(HpbxFC&td}aZGk&>Psjf@N~ XpT)8tEoFEQw41@x)z4*}Q$iB}no2*M From fe62189019f0ec704396d797d223706eb8b111eb Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 13 Aug 2021 11:35:18 +0200 Subject: [PATCH 040/271] Update French translation (part 1) --- mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr | 5 +++-- .../mcl_minecarts/locale/mcl_minecarts.fr.tr | 1 + mods/ENTITIES/mobs_mc/locale/template.txt | 1 + mods/HELP/doc/doc_items/locale/doc_items.fr.tr | 2 +- mods/HUD/mcl_credits/locale/mcl_credits.de.tr | 1 + mods/HUD/mcl_credits/locale/mcl_credits.es.tr | 14 ++++++++++++++ mods/HUD/mcl_credits/locale/mcl_credits.fr.tr | 14 ++++++++++++++ mods/HUD/mcl_credits/locale/mcl_credits.pl.tr | 14 ++++++++++++++ mods/HUD/mcl_credits/locale/mcl_credits.ru.tr | 14 ++++++++++++++ mods/ITEMS/mcl_chests/init.lua | 2 +- mods/ITEMS/mcl_chests/locale/template.txt | 2 +- .../ITEMS/mcl_fireworks/locale/mcl_fireworks.es.tr | 3 +++ .../ITEMS/mcl_fireworks/locale/mcl_fireworks.fr.tr | 3 +++ .../ITEMS/mcl_fireworks/locale/mcl_fireworks.ru.tr | 3 +++ mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr | 5 ++++- 15 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 mods/HUD/mcl_credits/locale/mcl_credits.es.tr create mode 100644 mods/HUD/mcl_credits/locale/mcl_credits.fr.tr create mode 100644 mods/HUD/mcl_credits/locale/mcl_credits.pl.tr create mode 100644 mods/HUD/mcl_credits/locale/mcl_credits.ru.tr create mode 100644 mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.es.tr create mode 100644 mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.fr.tr create mode 100644 mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.ru.tr diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr index 04d6d9da9..785d50146 100644 --- a/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.fr.tr @@ -6,6 +6,7 @@ Boats are used to travel on the surface of water.=Les bateaux sont utilisés pou Dark Oak Boat=Bateau en Chêne Noir Jungle Boat=Bateau en Acajou Oak Boat=Bateau en Chêne -Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Faites un clic droit sur une source d'eau pour placer le bateau. Faites un clic droit sur le bateau pour y entrer. Utilisez [Gauche] et [Droite] pour diriger, [Avant] pour accélérer et [Arrière] pour ralentir ou reculer. Cliquez de nouveau avec le bouton droit sur le bateau pour le quitter, frappez le bateau pour le faire tomber en tant qu'objet. +Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Use [Sneak] to leave the boat, punch the boat to make it drop as an item.=Faites un clic droit sur une source d'eau pour placer le bateau. Faites un clic droit sur le bateau pour y entrer. Utilisez [Gauche] et [Droite] pour diriger, [Avant] pour accélérer et [Arrière] pour ralentir ou reculer. Utilisez [Sneak] pour le quitter, frappez le bateau pour le faire tomber en tant qu'objet. Spruce Boat=Bateau en Sapin -Water vehicle=Véhicule aquatique \ No newline at end of file +Water vehicle=Véhicule aquatique +Sneak to dismount= \ No newline at end of file diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr index 39cdfd013..67ed5eb1b 100644 --- a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.fr.tr @@ -33,3 +33,4 @@ Activates minecarts when powered=Active les wagonnets lorsqu'il est alimenté Emits redstone power when a minecart is detected=Émet de l'énergie redstone lorsqu'un wagonnet est détecté Vehicle for fast travel on rails=Véhicule pour voyager rapidement sur rails Can be ignited by tools or powered activator rail=Peut être allumé par des outils ou un rail d'activation motorisé +Sneak to dismount= \ No newline at end of file diff --git a/mods/ENTITIES/mobs_mc/locale/template.txt b/mods/ENTITIES/mobs_mc/locale/template.txt index 04ba9e465..7b55c1b89 100644 --- a/mods/ENTITIES/mobs_mc/locale/template.txt +++ b/mods/ENTITIES/mobs_mc/locale/template.txt @@ -28,6 +28,7 @@ Pig= Polar Bear= Rabbit= Killer Bunny= +The Killer Bunny= Sheep= Shulker= Silverfish= diff --git a/mods/HELP/doc/doc_items/locale/doc_items.fr.tr b/mods/HELP/doc/doc_items/locale/doc_items.fr.tr index 5d655404d..824ceeeba 100644 --- a/mods/HELP/doc/doc_items/locale/doc_items.fr.tr +++ b/mods/HELP/doc/doc_items/locale/doc_items.fr.tr @@ -2,7 +2,7 @@ Using it as fuel turns it into: @1.=L'utiliser comme combustible le transforme en : @1. @1 seconds=@1 secondes # Item count times item name -%@1×@2=%@1×@ +@1×@2=@1×@ # Itemname (25%) @1 (@2%)=@1 (@2%) # Itemname (<0.5%) diff --git a/mods/HUD/mcl_credits/locale/mcl_credits.de.tr b/mods/HUD/mcl_credits/locale/mcl_credits.de.tr index 6a38d18e6..fa26f5bc4 100644 --- a/mods/HUD/mcl_credits/locale/mcl_credits.de.tr +++ b/mods/HUD/mcl_credits/locale/mcl_credits.de.tr @@ -7,6 +7,7 @@ Creator of MineClone2=Schöpfer von MineClone2 Developers=Entwickler Jump to speed up (additionally sprint)=Springen, um zu beschleunigen (zusätzlich sprinten) Maintainers=Betreuer +MineClone5=MineClone5 Original Mod Authors=Original-Mod-Autoren Sneak to skip=Schleichen zum Überspringen Textures=Texturen diff --git a/mods/HUD/mcl_credits/locale/mcl_credits.es.tr b/mods/HUD/mcl_credits/locale/mcl_credits.es.tr new file mode 100644 index 000000000..a8886286e --- /dev/null +++ b/mods/HUD/mcl_credits/locale/mcl_credits.es.tr @@ -0,0 +1,14 @@ +# textdomain: mcl_credits +3D Models= +A faithful Open Source clone of Minecraft= +Contributors= +Creator of MineClone= +Creator of MineClone2= +Developers= +Jump to speed up (additionally sprint)= +Maintainers= +MineClone5= +Original Mod Authors= +Sneak to skip= +Textures= +Translations= \ No newline at end of file diff --git a/mods/HUD/mcl_credits/locale/mcl_credits.fr.tr b/mods/HUD/mcl_credits/locale/mcl_credits.fr.tr new file mode 100644 index 000000000..b34249eff --- /dev/null +++ b/mods/HUD/mcl_credits/locale/mcl_credits.fr.tr @@ -0,0 +1,14 @@ +# textdomain: mcl_credits +3D Models=Modèles 3D +A faithful Open Source clone of Minecraft=Un clone open source de Minecraft +Contributors=Contributeurs +Creator of MineClone=Créateur de MineClone +Creator of MineClone2=Créateur de MineClone2 +Developers=Développeurs +Jump to speed up (additionally sprint)=Saut pour accélérer (peut être combiné avec sprint) +Maintainers=Mainteneurs +MineClone5=MineClone5 +Original Mod Authors=Auteurs des mods originaux +Sneak to skip=Shift pour passer +Textures=Textures +Translations=Traductions \ No newline at end of file diff --git a/mods/HUD/mcl_credits/locale/mcl_credits.pl.tr b/mods/HUD/mcl_credits/locale/mcl_credits.pl.tr new file mode 100644 index 000000000..a8886286e --- /dev/null +++ b/mods/HUD/mcl_credits/locale/mcl_credits.pl.tr @@ -0,0 +1,14 @@ +# textdomain: mcl_credits +3D Models= +A faithful Open Source clone of Minecraft= +Contributors= +Creator of MineClone= +Creator of MineClone2= +Developers= +Jump to speed up (additionally sprint)= +Maintainers= +MineClone5= +Original Mod Authors= +Sneak to skip= +Textures= +Translations= \ No newline at end of file diff --git a/mods/HUD/mcl_credits/locale/mcl_credits.ru.tr b/mods/HUD/mcl_credits/locale/mcl_credits.ru.tr new file mode 100644 index 000000000..a8886286e --- /dev/null +++ b/mods/HUD/mcl_credits/locale/mcl_credits.ru.tr @@ -0,0 +1,14 @@ +# textdomain: mcl_credits +3D Models= +A faithful Open Source clone of Minecraft= +Contributors= +Creator of MineClone= +Creator of MineClone2= +Developers= +Jump to speed up (additionally sprint)= +Maintainers= +MineClone5= +Original Mod Authors= +Sneak to skip= +Textures= +Translations= \ No newline at end of file diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index cd66c3fc4..69f6a601d 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -1133,7 +1133,7 @@ for color, desc in pairs(boxtypes) do if mod_doc then if is_canonical then longdesc = S("A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.") - usagehelp = S("To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out.") + usagehelp = S("To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out. Place the shulker box again to be able to retrieve its contents.") entry_name = S("Shulker Box") else create_entry = false diff --git a/mods/ITEMS/mcl_chests/locale/template.txt b/mods/ITEMS/mcl_chests/locale/template.txt index 1d947184b..d680c24c9 100644 --- a/mods/ITEMS/mcl_chests/locale/template.txt +++ b/mods/ITEMS/mcl_chests/locale/template.txt @@ -24,7 +24,7 @@ Red Shulker Box= Grey Shulker Box= Black Shulker Box= A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.= -To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out.= +To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out. Place the shulker box again to be able to retrieve its contents.= Shulker Box= Large Chest= Inventory= diff --git a/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.es.tr b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.es.tr new file mode 100644 index 000000000..e66eb06a5 --- /dev/null +++ b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.es.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_fireworks +Firework Rocket= +Flight Duration:= \ No newline at end of file diff --git a/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.fr.tr b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.fr.tr new file mode 100644 index 000000000..b02faa428 --- /dev/null +++ b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.fr.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_fireworks +Firework Rocket=Fusée +Flight Duration:=Durée de vol : \ No newline at end of file diff --git a/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.ru.tr b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.ru.tr new file mode 100644 index 000000000..e66eb06a5 --- /dev/null +++ b/mods/ITEMS/mcl_fireworks/locale/mcl_fireworks.ru.tr @@ -0,0 +1,3 @@ +# textdomain: mcl_fireworks +Firework Rocket= +Flight Duration:= \ No newline at end of file diff --git a/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr b/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr index 9ef7cd5c5..1808e839d 100644 --- a/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr +++ b/mods/ITEMS/mcl_maps/locale/mcl_maps.fr.tr @@ -1,5 +1,8 @@ # textdomain: mcl_maps Empty Map=Carte Vierge Empty maps are not useful as maps, but they can be stacked and turned to maps which can be used.=Les cartes vierges ne sont pas utiles en tant que cartes, mais elles peuvent être empilées et transformées en cartes utilisables. -Rightclick to start using the map (which can't be stacked anymore).=Clic droit pour commencer à utiliser la carte (qui ne peut plus être empilée). +Rightclick to create a filled map (which can't be stacked anymore).=Clic droit pour créer une carte remplie (qui ne peut plus être empilée). Map=Carte +Shows a map image.=Affiche une carte. +When created, the map saves the nearby area as an image that can be viewed any time by holding the map.=Lors de sa création, la carte sauvegarde le terrain proche sous forme d'image qui peut être consultée n'importe quand en tenant la carte dans la main. +Hold the map in your hand. This will display a map on your screen.=Tenez la carte dans votre main. Cela affichera la carte à l'écran. From 58a292a4f3edcf6816936b89a6b32275fb785299 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 16 Aug 2021 13:48:08 +0200 Subject: [PATCH 041/271] fix inconsistency --- mods/HUD/mcl_title/init.lua | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index d1dbece4b..ffdc45639 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -36,7 +36,11 @@ local string = string local pairs = pairs local function gametick_to_secondes(gametick) - return gametick / 20 + if gametick then + return gametick / 20 + else + return nil + end end @@ -46,9 +50,9 @@ local player_params = {} minetest.register_on_joinplayer(function(player) local playername = player:get_player_name() player_params[player] = { - stay = gametick_to_secondes(mcl_title.defaults.stay), - --fadeIn = gametick_to_secondes(mcl_title.defaults.fadein), - --fadeOut = gametick_to_secondes(mcl_title.defaults.fadeout), + stay = mcl_title.defaults.stay, + --fadeIn = mcl_title.defaults.fadein, + --fadeOut = mcl_title.defaults.fadeout, } local _, hex_color = get_color("white") huds_idx.title[player] = player:hud_add({ @@ -106,9 +110,9 @@ end) function mcl_title.params_set(player, data) player_params[player] = { - stay = gametick_to_secondes(data.stay) or gametick_to_secondes(mcl_title.defaults.stay), - --fadeIn = gametick_to_secondes(data.fadeIn) or gametick_to_secondes(mcl_title.defaults.fadein), - --fadeOut = gametick_to_secondes(data.fadeOut) or gametick_to_secondes(mcl_title.defaults.fadeout), + stay = data.stay or mcl_title.defaults.stay, + --fadeIn = data.fadeIn or mcl_title.defaults.fadein, + --fadeOut = data.fadeOut or mcl_title.defaults.fadeout, } end @@ -134,7 +138,7 @@ function mcl_title.set(player, type, data) player:hud_change(huds_idx[type][player], "text", data.text) player:hud_change(huds_idx[type][player], "number", hex_color) - hud_hide_timeouts[type][player:get_player_name()] = gametick_to_secondes(data.stay) or mcl_title.params_get(player).stay + hud_hide_timeouts[type][player:get_player_name()] = gametick_to_secondes(data.stay) or gametick_to_secondes(mcl_title.params_get(player).stay) return true end From 40898d3e9dfeb492ecaca2621308c8c125ef5471 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 16 Aug 2021 14:19:50 +0200 Subject: [PATCH 042/271] WIP bold and italic support --- mods/HUD/mcl_title/init.lua | 38 +++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index ffdc45639..933158d20 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -43,6 +43,23 @@ local function gametick_to_secondes(gametick) end end +--https://github.com/minetest/minetest/blob/b3b075ea02034306256b486dd45410aa765f035a/doc/lua_api.txt#L8477 + +local function style_to_bits(bold, italic) + if bold then + if italic then + return 3 + else + return 1 + end + else + if italic then + return 2 + else + return 0 + end + end +end --PARAMS SYSTEM local player_params = {} @@ -60,8 +77,7 @@ minetest.register_on_joinplayer(function(player) position = mcl_title.layout.title.position, alignment = mcl_title.layout.title.alignment, text = "", - --bold = data.bold, - --italic = data.italic, + style = 0, size = {x = mcl_title.layout.title.size}, number = hex_color, z_index = 100, @@ -71,8 +87,7 @@ minetest.register_on_joinplayer(function(player) position = mcl_title.layout.subtitle.position, alignment = mcl_title.layout.subtitle.alignment, text = "", - --bold = data.bold, - --italic = data.italic, + style = 0, size = {x = mcl_title.layout.subtitle.size}, number = hex_color, z_index = 100, @@ -82,8 +97,7 @@ minetest.register_on_joinplayer(function(player) position = mcl_title.layout.actionbar.position, offset = {x = 0, y = -210}, alignment = mcl_title.layout.actionbar.alignment, - --bold = data.bold, - --italic = data.italic, + style = 0, text = "", size = {x = mcl_title.layout.actionbar.size}, number = hex_color, @@ -131,13 +145,12 @@ function mcl_title.set(player, type, data) return false end - --TODO: enable this code then Fleckenstein's pr get merged (in about 5-6 years lol) - - --if data.bold == nil then data.bold = false end - --if data.italic == nil then data.italic = false end - player:hud_change(huds_idx[type][player], "text", data.text) player:hud_change(huds_idx[type][player], "number", hex_color) + + --apply bold and italic + player:hud_change(huds_idx[type][player], "style", style_to_bits(data.bold, data.italic)) + hud_hide_timeouts[type][player:get_player_name()] = gametick_to_secondes(data.stay) or gametick_to_secondes(mcl_title.params_get(player).stay) return true end @@ -145,6 +158,7 @@ end function mcl_title.remove(player, type) if player then player:hud_change(huds_idx[type][player], "text", "") + player:hud_change(huds_idx[type][player], "style", 0) --no styling end end @@ -184,7 +198,7 @@ end) minetest.register_chatcommand("title", { func = function(name, param) local player = minetest.get_player_by_name(name) - mcl_title.set(player, "title", {text=param, color="gold"}) + mcl_title.set(player, "title", {text=param, color="gold", bold=true, italic=true}) end, }) From df4b8e64cc153ba70457a199661e1e6e92e30bf9 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Thu, 19 Aug 2021 19:21:33 +0200 Subject: [PATCH 043/271] finish `mcl_title` API + doc --- mods/HUD/mcl_title/API.md | 8 ++++++ mods/HUD/mcl_title/init.lua | 28 +++++++++++--------- mods/HUD/mcl_tmp_message/API.md | 7 ----- mods/HUD/mcl_tmp_message/init.lua | 44 ------------------------------- mods/HUD/mcl_tmp_message/mod.conf | 3 --- 5 files changed, 23 insertions(+), 67 deletions(-) delete mode 100644 mods/HUD/mcl_tmp_message/API.md delete mode 100644 mods/HUD/mcl_tmp_message/init.lua delete mode 100644 mods/HUD/mcl_tmp_message/mod.conf diff --git a/mods/HUD/mcl_title/API.md b/mods/HUD/mcl_title/API.md index 50614be4f..97d75ece8 100644 --- a/mods/HUD/mcl_title/API.md +++ b/mods/HUD/mcl_title/API.md @@ -39,4 +39,12 @@ Allow mods to set `stay` and upcomming `fadeIn`/`fadeOut` params. ```lua mcl_title.params_set(player, {stay = 600}) --elements with no 'data.stay' field will stay during 30s (600/20) +``` + +## mcl_title.params_get(player) + +Get `stay` and upcomming `fadeIn` and `fadeOut` params of a player as a table. + +```lua +mcl_title.params_get(player) ``` \ No newline at end of file diff --git a/mods/HUD/mcl_title/init.lua b/mods/HUD/mcl_title/init.lua index 933158d20..2ea1571c8 100644 --- a/mods/HUD/mcl_title/init.lua +++ b/mods/HUD/mcl_title/init.lua @@ -32,7 +32,7 @@ mcl_title.layout.actionbar = {position = {x = 0.5, y = 1}, alignment = {x = 0, y local get_color = mcl_util.get_color -local string = string +--local string = string local pairs = pairs local function gametick_to_secondes(gametick) @@ -44,7 +44,7 @@ local function gametick_to_secondes(gametick) end --https://github.com/minetest/minetest/blob/b3b075ea02034306256b486dd45410aa765f035a/doc/lua_api.txt#L8477 - +--[[ local function style_to_bits(bold, italic) if bold then if italic then @@ -60,24 +60,25 @@ local function style_to_bits(bold, italic) end end end +]] --PARAMS SYSTEM local player_params = {} minetest.register_on_joinplayer(function(player) - local playername = player:get_player_name() + --local playername = player:get_player_name() player_params[player] = { stay = mcl_title.defaults.stay, --fadeIn = mcl_title.defaults.fadein, --fadeOut = mcl_title.defaults.fadeout, } - local _, hex_color = get_color("white") + local _, hex_color = get_color("white") huds_idx.title[player] = player:hud_add({ hud_elem_type = "text", position = mcl_title.layout.title.position, alignment = mcl_title.layout.title.alignment, text = "", - style = 0, + --style = 0, size = {x = mcl_title.layout.title.size}, number = hex_color, z_index = 100, @@ -87,7 +88,7 @@ minetest.register_on_joinplayer(function(player) position = mcl_title.layout.subtitle.position, alignment = mcl_title.layout.subtitle.alignment, text = "", - style = 0, + --style = 0, size = {x = mcl_title.layout.subtitle.size}, number = hex_color, z_index = 100, @@ -97,7 +98,7 @@ minetest.register_on_joinplayer(function(player) position = mcl_title.layout.actionbar.position, offset = {x = 0, y = -210}, alignment = mcl_title.layout.actionbar.alignment, - style = 0, + --style = 0, text = "", size = {x = mcl_title.layout.actionbar.size}, number = hex_color, @@ -116,7 +117,7 @@ minetest.register_on_leaveplayer(function(player) huds_idx.subtitle[player] = nil huds_idx.actionbar[player] = nil - --remove timers form list + --remove timers from list hud_hide_timeouts.title[playername] = nil hud_hide_timeouts.subtitle[playername] = nil hud_hide_timeouts.actionbar[playername] = nil @@ -149,7 +150,7 @@ function mcl_title.set(player, type, data) player:hud_change(huds_idx[type][player], "number", hex_color) --apply bold and italic - player:hud_change(huds_idx[type][player], "style", style_to_bits(data.bold, data.italic)) + --player:hud_change(huds_idx[type][player], "style", style_to_bits(data.bold, data.italic)) hud_hide_timeouts[type][player:get_player_name()] = gametick_to_secondes(data.stay) or gametick_to_secondes(mcl_title.params_get(player).stay) return true @@ -158,7 +159,7 @@ end function mcl_title.remove(player, type) if player then player:hud_change(huds_idx[type][player], "text", "") - player:hud_change(huds_idx[type][player], "style", 0) --no styling + --player:hud_change(huds_idx[type][player], "style", 0) --no styling end end @@ -193,8 +194,8 @@ minetest.register_globalstep(function(dtime) end) ---TEMP STUFF!! ---TODO: remove then testing/tweaking done +--DEBUG STUFF!! +--[[ minetest.register_chatcommand("title", { func = function(name, param) local player = minetest.get_player_by_name(name) @@ -231,4 +232,5 @@ minetest.register_chatcommand("all", { mcl_title.set(player, "subtitle", {text=param, color="gold"}) mcl_title.set(player, "actionbar", {text=param, color="gold"}) end, -}) \ No newline at end of file +}) +]] \ No newline at end of file diff --git a/mods/HUD/mcl_tmp_message/API.md b/mods/HUD/mcl_tmp_message/API.md deleted file mode 100644 index 0a3fc06a3..000000000 --- a/mods/HUD/mcl_tmp_message/API.md +++ /dev/null @@ -1,7 +0,0 @@ -# mcl_temp_message - -Allow mods to show short messages in the hud of players. - -## mcl_tmp_message.message(player, message) - -Show above the hotbar a hud message to player . \ No newline at end of file diff --git a/mods/HUD/mcl_tmp_message/init.lua b/mods/HUD/mcl_tmp_message/init.lua deleted file mode 100644 index 1456cd592..000000000 --- a/mods/HUD/mcl_tmp_message/init.lua +++ /dev/null @@ -1,44 +0,0 @@ -mcl_tmp_message = {} - -local huds = {} -local hud_hide_timeouts = {} - -function mcl_tmp_message.message(player, message) - local name = player:get_player_name() - player:hud_change(huds[name], "text", message) - hud_hide_timeouts[name] = 3 -end - -minetest.register_on_joinplayer(function(player) - huds[player:get_player_name()] = player:hud_add({ - hud_elem_type = "text", - position = {x=0.5, y=1}, - offset = {x = 0, y = -210}, - alignment = {x=0, y=0}, - number = 0xFFFFFF , - text = "", - z_index = 100, - }) -end) - -minetest.register_on_leaveplayer(function(player) - local name = player:get_player_name() - huds[name] = nil - hud_hide_timeouts[name] = nil -end) - -minetest.register_globalstep(function(dtime) - local new_timeouts = {} - for name, timeout in pairs(hud_hide_timeouts) do - timeout = timeout - dtime - if timeout <= 0 then - local player = minetest.get_player_by_name(name) - if player then - player:hud_change(huds[name], "text", "") - end - else - new_timeouts[name] = timeout - end - end - hud_hide_timeouts = new_timeouts -end) diff --git a/mods/HUD/mcl_tmp_message/mod.conf b/mods/HUD/mcl_tmp_message/mod.conf deleted file mode 100644 index ad453643e..000000000 --- a/mods/HUD/mcl_tmp_message/mod.conf +++ /dev/null @@ -1,3 +0,0 @@ -name = mcl_tmp_message -author = Fleckenstein -description = A simple API to show a temporary message to a player From 345f40ded642b17694c8af6aa3e662f41141d57e Mon Sep 17 00:00:00 2001 From: Glaucos Ginez Date: Sun, 22 Aug 2021 14:44:01 -0300 Subject: [PATCH 044/271] Fix issue 26 --- mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua | 5 ++--- .../ENTITIES/mcl_mobs/api/mob_functions/set_up.lua | 14 ++++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua index af006d1cc..cdcffd81c 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua @@ -821,9 +821,8 @@ function mobs.mob_step(self, dtime) self.lifetimer = self.lifetimer - dtime if self.lifetimer <= 0 then self.lifetimer = self.lifetimer_reset - if not mobs.check_for_player_within_area(self, 64) then - --print("removing in MAIN LOGIC!") - self.object:remove() + if mobs.can_despawn(self) then + self.object:remove() return end end diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua index 65ba764f6..b9cf2f669 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua @@ -5,16 +5,18 @@ local minetest_settings = minetest.settings -- CMI support check local use_cmi = minetest.global_exists("cmi") +mobs.can_despawn = function(self) + return (not self.tamed and not self.bred and not self.nametag and + not mobs.check_for_player_within_area(self, 64)); +end + -- get entity staticdata mobs.mob_staticdata = function(self) --despawn mechanism --don't despawned tamed or bred mobs - if not self.tamed and not self.bred then - if not mobs.check_for_player_within_area(self, 64) then - --print("removing SERIALIZED!") - self.object:remove() - return - end + if mobs.can_despawn(self) then + self.object:remove() + return end self.remove_ok = true From af8e88f44cad6465e91530b0f87e8588e885cff3 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Tue, 24 Aug 2021 08:25:42 +0200 Subject: [PATCH 045/271] fix error in `mcl_title` documentation --- mods/HUD/mcl_title/API.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/HUD/mcl_title/API.md b/mods/HUD/mcl_title/API.md index 97d75ece8..37f1c279f 100644 --- a/mods/HUD/mcl_title/API.md +++ b/mods/HUD/mcl_title/API.md @@ -21,7 +21,7 @@ mcl_title.set(player, "subtitle", {text="dummy subtitle", color="#612D2D"}) mcl_title.set(player, "subtitle", {text="dummy actionbar", color="red"}) --show a title in the HUD with minecraft color "gold" staying for 3 seconds (override stay setting) -mcl_title.set(player, "title", {text="dummy text", color="gold", stay=3}) +mcl_title.set(player, "title", {text="dummy text", color="gold", stay=60}) ``` ## mcl_title.remove(player, type) From f0af15fcd8006a66ce91ba3efbf77c24a8e8ffca Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 26 Aug 2021 10:14:57 +0000 Subject: [PATCH 046/271] Make anvil selection/collision box more MC like --- mods/ITEMS/mcl_anvils/init.lua | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index 51b78da6f..e1685c60e 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -284,6 +284,12 @@ local function damage_anvil_by_falling(pos, distance) end end +local anvilbox = { + type = "fixed", + fixed = { + { -8 / 16, -8 / 16, -6 / 16, 8 / 16, 8 / 16, 6 / 16 }, + }, +} local anvildef = { groups = {pickaxey=1, falling_node=1, falling_node_damage=1, crush_after_fall=1, deco_block=1, anvil=1}, tiles = {"mcl_anvils_anvil_top_damaged_0.png^[transformR90", "mcl_anvils_anvil_base.png", "mcl_anvils_anvil_side.png"}, @@ -297,12 +303,14 @@ local anvildef = { node_box = { type = "fixed", fixed = { - { -6/16, -8/16, -6/16, 6/16, -4/16, 6/16 }, - { -5/16, -4/16, -4/16, 5/16, -3/16, 4/16 }, - { -4/16, -3/16, -2/16, 4/16, 2/16, 2/16 }, - { -8/16, 2/16, -5/16, 8/16, 8/16, 5/16 }, + { -6 / 16, -8 / 16, -6 / 16, 6 / 16, -4 / 16, 6 / 16 }, + { -5 / 16, -4 / 16, -4 / 16, 5 / 16, -3 / 16, 4 / 16 }, + { -4 / 16, -3 / 16, -2 / 16, 4 / 16, 2 / 16, 2 / 16 }, + { -8 / 16, 2 / 16, -5 / 16, 8 / 16, 8 / 16, 5 / 16 }, } }, + selection_box = anvilbox, + collision_box = anvilbox, sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1200, _mcl_hardness = 5, From 2b322a451f9ecd71918c9eeb6f40a386d031bfea Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 26 Aug 2021 10:17:15 +0000 Subject: [PATCH 047/271] remove space --- mods/ITEMS/mcl_totems/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index 5f9b254a3..2206fcb2a 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -87,7 +87,7 @@ mcl_damage.register_modifier(function(obj, damage, reason) end end) - -- Big totem overlay + -- Big totem overlay if not hud_totem[obj] then hud_totem[obj] = obj:hud_add({ hud_elem_type = "image", From ca086109bf17787e3a7b075ceb07ccb82810a3bb Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 31 Aug 2021 21:04:57 +0000 Subject: [PATCH 048/271] support tables for `_repair_material` --- mods/ITEMS/mcl_anvils/init.lua | 44 +++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index e1685c60e..d3b32b844 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -53,6 +53,15 @@ local function get_consumed_materials(tool, material) return materials_used end +local function contains(table, value) + for _, i in pairs(table) do + if i == value then + return true + end + end + return false +end + -- Given 2 input stacks, tells you which is the tool and which is the material. -- Returns ("tool", input1, input2) if input1 is tool and input2 is material. -- Returns ("material", input2, input1) if input1 is material and input2 is tool. @@ -60,9 +69,15 @@ end local function distinguish_tool_and_material(input1, input2) local def1 = input1:get_definition() local def2 = input2:get_definition() - if def1.type == "tool" and def1._repair_material then + local r1 = def1._repair_material + local r2 = def2._repair_material + if def1.type == "tool" and r1 and type(r1) == "table" and contains(r1, input2) then return "tool", input1, input2 - elseif def2.type == "tool" and def2._repair_material then + elseif def2.type == "tool" and r2 and type(r2) == "table" and contains(r2, input1) then + return "material", input2, input1 + elseif def1.type == "tool" and r1 then + return "tool", input1, input2 + elseif def2.type == "tool" and r2 then return "material", input2, input1 else return nil @@ -121,11 +136,28 @@ local function update_anvil_slots(meta) local distinguished, tool, material = distinguish_tool_and_material(input1, input2) if distinguished then local tooldef = tool:get_definition() + local repair = tooldef._repair_material local has_correct_material = false - if string.sub(tooldef._repair_material, 1, 6) == "group:" then - has_correct_material = minetest.get_item_group(material:get_name(), string.sub(tooldef._repair_material, 7)) ~= 0 - elseif material:get_name() == tooldef._repair_material then - has_correct_material = true + local material_name = material:get_name() + if type(repair) == "string" then + if string.sub(repair, 1, 6) == "group:" then + has_correct_material = minetest.get_item_group(material_name, string.sub(repair, 7)) ~= 0 + elseif material_name == repair then + has_correct_material = true + end + else + if contains(repair, material_name) then + has_correct_material = true + else + for _, r in pairs(repair) do + if string.sub(r, 1, 6) == "group:" then + if minetest.get_item_group(material_name, string.sub(r, 7)) ~= 0 then + has_correct_material = true + end + + end + end + end end if has_correct_material and tool:get_wear() > 0 then local materials_used = get_consumed_materials(tool, material) From 0da7b3fbda988d11ee79a03ca3c2719d6906e20f Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 2 Sep 2021 20:38:01 +0000 Subject: [PATCH 049/271] Make cactus mechanisms more MC like (Fix #1741) --- mods/ITEMS/mcl_core/functions.lua | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index eceb81c51..af4821c90 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -184,6 +184,7 @@ minetest.register_abm({ end, }) +-- Cactus mechanisms minetest.register_abm({ label = "Cactus growth", nodenames = {"mcl_core:cactus"}, @@ -195,19 +196,31 @@ minetest.register_abm({ end, }) --- Make cactus destroy items minetest.register_abm({ label = "Cactus destroy items", nodenames = {"mcl_core:cactus"}, interval = 1, chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) - for _,object in pairs(minetest.get_objects_inside_radius(pos, 0.9)) do + for _, object in pairs(minetest.get_objects_inside_radius(pos, 0.9)) do local entity = object:get_luaentity() if entity and entity.name == "__builtin:item" then object:remove() end end + local posses = { { 1, 0 }, { -1, 0 }, { 0, 1 }, { 0, -1 } } + for _, p in pairs(posses) do + if minetest.registered_nodes[minetest.get_node(vector.new(pos.x + p[1], pos.y, pos.z + p[2])).name].walkable then + local posy = pos.y + while minetest.get_node(vector.new(pos.x, posy, pos.z)).name == "mcl_core:cactus" do + local pos = vector.new(pos.x, posy, pos.z) + minetest.remove_node(pos) + minetest.add_item(vector.offset(pos, math.random(-0.5, 0.5), 0, math.random(-0.5, 0.5)), "mcl_core:cactus") + posy = posy + 1 + end + break + end + end end, }) From bf62eb33fa97cc345fcab2515b2360cd18b80fbf Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 3 Sep 2021 14:06:21 +0000 Subject: [PATCH 050/271] Change label of cactus abm --- mods/ITEMS/mcl_core/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index af4821c90..2ef73af72 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -197,7 +197,7 @@ minetest.register_abm({ }) minetest.register_abm({ - label = "Cactus destroy items", + label = "Cactus mechanisms", nodenames = {"mcl_core:cactus"}, interval = 1, chance = 1, From 5fedd914fb110aa8adeed1c3fe633a2c9e25c9e7 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 4 Sep 2021 19:14:08 +0000 Subject: [PATCH 051/271] Fix strange behaviour when filling end portal with bedrock inside (#1749) --- mods/ITEMS/mcl_portals/portal_end.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 9f0db352a..e4982c39b 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -391,7 +391,3 @@ minetest.override_item("mcl_end:ender_eye", { return itemstack end, }) -minetest.override_item("mcl_core:bedrock", { - after_destruct = destroy_portal, -}) - From f41cea71fd61473090cd04ac8f206f56b9cd3410 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 6 Sep 2021 13:30:08 +0000 Subject: [PATCH 052/271] Make it possible to use shears in the dispenser for mobs (Fix #1233) --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 53 +++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 7c2c07393..62ed2dc71 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -168,6 +168,59 @@ local dispenserdef = { end inv:set_stack("main", stack_id, stack) + + -- Use shears on sheeps + elseif igroups.shears then + for _, obj in pairs(minetest.get_objects_inside_radius(droppos, 1)) do + local entity = obj:get_luaentity() + if entity and not entity.child and not entity.gotten then + local entname = entity.name + local pos = obj:get_pos() + local used, texture = false + if entname == "mobs_mc:sheep" then + minetest.add_item(pos, entity.drops[2].name .. " " .. math.random(1, 3)) + if not entity.color then + entity.color = "unicolor_white" + end + entity.base_texture = { "blank.png", "mobs_mc_sheep.png" } + texture = entity.base_texture + entity.drops = { + { name = mobs_mc.items.mutton_raw, chance = 1, min = 1, max = 2 }, + } + used = true + elseif entname == "mobs_mc:snowman" then + texture = { + "mobs_mc_snowman.png", + "blank.png", "blank.png", + "blank.png", "blank.png", + "blank.png", "blank.png", + } + used = true + elseif entname == "mobs_mc:mooshroom" then + local droppos = vector.offset(pos, 0, 1.4, 0) + if entity.base_texture[1] == "mobs_mc_mooshroom_brown.png" then + minetest.add_item(droppos, mobs_mc.items.mushroom_brown .. " 5") + else + minetest.add_item(droppos, mobs_mc.items.mushroom_red .. " 5") + end + local oldyaw = obj:get_yaw() + obj:remove() + local cow = minetest.add_entity(pos, "mobs_mc:cow") + cow:set_yaw(oldyaw) + obj = cow + entity = cow:get_luaentity() + used = true + end + if used then + obj:set_properties({ textures = texture }) + entity.gotten = true + minetest.sound_play("mcl_tools_shears_cut", { pos = pos }, true) + stack:add_wear(65535 / stackdef._mcl_diggroups.shearsy.uses) + inv:set_stack("main", stack_id, stack) + end + end + end + -- Spawn Egg elseif igroups.spawn_egg then -- Spawn mob From dc8436fdf95afe224437d5fa6e3c883fa322f2a6 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 6 Sep 2021 14:34:25 +0000 Subject: [PATCH 053/271] Destroy objects near cactus faster (make it possible to throw items at a cactus) --- mods/ENTITIES/mcl_item_entity/init.lua | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index ab1ac5752..7869b9d79 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -575,7 +575,7 @@ minetest.register_entity(":__builtin:item", { return true end, - on_step = function(self, dtime) + on_step = function(self, dtime, moveresult) if self._removed then self.object:set_properties({ physical = false @@ -642,6 +642,18 @@ minetest.register_entity(":__builtin:item", { end end + -- Destroy item when it collides with a cactus + if moveresult and moveresult.collides then + for _, collision in pairs(moveresult.collisions) do + local pos = collision.node_pos + if collision.type == "node" and minetest.get_node(pos).name == "mcl_core:cactus" then + self._removed = true + self.object:remove() + return + end + end + end + -- Push item out when stuck inside solid opaque node if def and def.walkable and def.groups and def.groups.opaque == 1 then local shootdir From 1a5339e907c1b5d572e2fe38a8b4451bf9bfff43 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 8 Sep 2021 14:22:53 +0000 Subject: [PATCH 054/271] Only use the shears once in dispenser if there are more mobs in front of the dispenser --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 62ed2dc71..82d53c806 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -217,6 +217,7 @@ local dispenserdef = { minetest.sound_play("mcl_tools_shears_cut", { pos = pos }, true) stack:add_wear(65535 / stackdef._mcl_diggroups.shearsy.uses) inv:set_stack("main", stack_id, stack) + break end end end From 7ae73bcf474b4c2c05c86f7fc214b1d743ad5dab Mon Sep 17 00:00:00 2001 From: cora Date: Fri, 10 Sep 2021 21:41:15 +0200 Subject: [PATCH 055/271] fix crash and netherite hoes The item registration in mcl_farming for diamond hoes contains the wrong upgrade_item id (mcl_tools:hoe_netherite, should me mcl_farming:). This commit changes that. --- mods/ITEMS/mcl_farming/hoes.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_farming/hoes.lua b/mods/ITEMS/mcl_farming/hoes.lua index dd635006f..ddd1b5a93 100644 --- a/mods/ITEMS/mcl_farming/hoes.lua +++ b/mods/ITEMS/mcl_farming/hoes.lua @@ -257,7 +257,7 @@ minetest.register_tool("mcl_farming:hoe_diamond", { hoey = { speed = 8, level = 5, uses = 1562 } }, _mcl_upgradable = true, - _mcl_upgrade_item = "mcl_tools:hoe_netherite" + _mcl_upgrade_item = "mcl_farming:hoe_netherite" }) minetest.register_craft({ From 89ff666a6a7a456daf22a224f42ba7a34919aeec Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 12 Sep 2021 12:21:18 +0000 Subject: [PATCH 056/271] Add playersSleepingPercentage server setting (Fix #920) --- mods/ITEMS/mcl_beds/functions.lua | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index e196f69ad..fd8a6d7cd 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -9,6 +9,7 @@ local weather_mod = minetest.get_modpath("mcl_weather") local explosions_mod = minetest.get_modpath("mcl_explosions") local spawn_mod = minetest.get_modpath("mcl_spawn") local worlds_mod = minetest.get_modpath("mcl_worlds") +local players_in_bed_setting = tonumber(minetest.settings:get("mcl_playersSleepingPercentage")) -- Helper functions @@ -34,19 +35,10 @@ local function is_night_skip_enabled() end local function check_in_beds(players) - local in_bed = mcl_beds.player if not players then players = minetest.get_connected_players() end - - for n, player in pairs(players) do - local name = player:get_player_name() - if not in_bed[name] then - return false - end - end - - return #players > 0 + return players_in_bed_setting <= (#mcl_beds.player * 100) / #players end -- These monsters do not prevent sleep @@ -198,8 +190,8 @@ end local function update_formspecs(finished, ges) local ges = ges or #minetest.get_connected_players() local form_n = "size[12,5;true]" - local all_in_bed = ges == player_in_bed - local night_skip = is_night_skip_enabled() + local all_in_bed = players_in_bed_setting <= (player_in_bed * 100) / ges + local night_skip = is_night_skip_enabled() and players_in_bed_setting <= 100 local button_leave = "button_exit[4,3;4,0.75;leave;"..F(S("Leave bed")).."]" local button_abort = "button_exit[4,3;4,0.75;leave;"..F(S("Abort sleep")).."]" local bg_presleep = "bgcolor[#00000080;true]" @@ -212,7 +204,7 @@ local function update_formspecs(finished, ges) return elseif not is_sp then local text = S("Players in bed: @1/@2", player_in_bed, ges) - if not night_skip then + if not night_skip or players_in_bed_setting > 100 then text = text .. "\n" .. S("Note: Night skip is disabled.") form_n = form_n .. bg_presleep form_n = form_n .. button_leave @@ -221,7 +213,13 @@ local function update_formspecs(finished, ges) form_n = form_n .. bg_sleep form_n = form_n .. button_abort else - text = text .. "\n" .. S("You will fall asleep when all players are in bed.") + local comment = "You will fall asleep when " + if players_in_bed_setting == 100 then + comment = comment .. "all players are in bed." + else + comment = comment .. players_in_bed_setting .. "% of all players are in bed." + end + text = text .. "\n" .. S(comment) form_n = form_n .. bg_presleep form_n = form_n .. button_leave end From 0bc9ab9233811b508e1aa29c4b1ea421b47fead3 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 12 Sep 2021 12:23:28 +0000 Subject: [PATCH 057/271] Add playersSleepingPercentage setting to settingtypes.txt --- settingtypes.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/settingtypes.txt b/settingtypes.txt index f605019ad..89e11833f 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -33,6 +33,11 @@ mcl_tnt_griefing (TNT destroys blocks) bool true # This setting is only read at startup. enable_bed_respawn (Respawn at bed) bool true +# How many players have to sleep to skip the night, in percent. +# Setting to 0 will mean 1 player is always enough to skip the night. Setting above 100 will prevent skipping the night. +# 100 by default. +mcl_playersSleepingPercentage (Players Sleeping Percentage) int 100 + # If enabled, the night can be skipped if all players are in bed. # This setting is only read at startup. enable_bed_night_skip (Skip night when sleeping) bool true From cd84c472dcb67b32b74397f87c00503b7414fc77 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 12 Sep 2021 12:49:39 +0000 Subject: [PATCH 058/271] Add translation support. --- mods/ITEMS/mcl_beds/functions.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index fd8a6d7cd..01ccec851 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -215,11 +215,11 @@ local function update_formspecs(finished, ges) else local comment = "You will fall asleep when " if players_in_bed_setting == 100 then - comment = comment .. "all players are in bed." + comment = S(comment .. "all players are in bed.") else - comment = comment .. players_in_bed_setting .. "% of all players are in bed." + comment = S(comment .. "@1% of all players are in bed.", players_in_bed_setting) end - text = text .. "\n" .. S(comment) + text = text .. "\n" .. comment form_n = form_n .. bg_presleep form_n = form_n .. button_leave end From 9f9799d96e699a0b64bce5fee061deeb040b3aa4 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 12 Sep 2021 12:50:54 +0000 Subject: [PATCH 059/271] Update template.txt in mcl_beds --- mods/ITEMS/mcl_beds/locale/template.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_beds/locale/template.txt b/mods/ITEMS/mcl_beds/locale/template.txt index 8301dfa33..5525bd91b 100644 --- a/mods/ITEMS/mcl_beds/locale/template.txt +++ b/mods/ITEMS/mcl_beds/locale/template.txt @@ -37,5 +37,6 @@ Players in bed: @1/@2= Note: Night skip is disabled.= You're sleeping.= You will fall asleep when all players are in bed.= +You will fall asleep when @1% of all players are in bed.= You're in bed.= Allows you to sleep= From 410b7c7844b674a062e1726a058e992698b9b34e Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 12 Sep 2021 12:52:26 +0000 Subject: [PATCH 060/271] Update german translation for mcl_beds --- mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr b/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr index 16592115e..eb6967941 100644 --- a/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr +++ b/mods/ITEMS/mcl_beds/locale/mcl_beds.de.tr @@ -37,5 +37,6 @@ Players in bed: @1/@2=Spieler im Bett: @1/@2 Note: Night skip is disabled.=Anmerkung: Überspringen der Nacht deaktiviert. You're sleeping.=Sie schlafen. You will fall asleep when all players are in bed.=Sie werden einschlafen, wenn alle Spieler im Bett sind. +You will fall asleep when @1% of all players are in bed.=Sie werden einschlafen, wenn @1% der Spieler im Bett sind. You're in bed.=Sie sind im Bett. Allows you to sleep=Zum Einschafen From 1c192f4fbbee2089ff72912cf369e8591fd4e481 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 8 Jul 2021 15:34:50 +0200 Subject: [PATCH 061/271] Do not send useless HUDCHANGE packets Several mods set or unset the visibility of a HUD bar way too often (e.g. in a globalstep handler), causing the server to send a lot of superfluous HUDCHANGE packets to each client. Returning from hb.hide_hudbar() early if HUD bar visibility would not change prevents sending these packets. --- mods/HUD/hudbars/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/HUD/hudbars/init.lua b/mods/HUD/hudbars/init.lua index 08f1914ca..505ff403b 100644 --- a/mods/HUD/hudbars/init.lua +++ b/mods/HUD/hudbars/init.lua @@ -425,6 +425,7 @@ function hb.hide_hudbar(player, identifier) local name = player:get_player_name() local hudtable = hb.get_hudtable(identifier) if hudtable == nil then return false end + if hudtable.hudstate[name].hidden == true then return true end if hb.settings.bar_type == "progress_bar" then if hudtable.hudids[name].icon then player:hud_change(hudtable.hudids[name].icon, "scale", {x=0,y=0}) @@ -443,6 +444,7 @@ function hb.unhide_hudbar(player, identifier) local name = player:get_player_name() local hudtable = hb.get_hudtable(identifier) if hudtable == nil then return false end + if hudtable.hudstate[name].hidden == false then return true end local value = hudtable.hudstate[name].value local max = hudtable.hudstate[name].max if hb.settings.bar_type == "progress_bar" then From 95c4d6472bc57c056c5116be88d8f99550ec04b6 Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Sun, 4 Jul 2021 03:25:05 +0200 Subject: [PATCH 062/271] Send FOV packets only when necessary Before this change, about 10 to 30 FOV packets were sent from the server to each connected client each second. This patch only sends FOV packets when the FOV actually needs to be changed, i.e. when the player starts or stops sprinting. --- mods/PLAYER/mcl_sprint/init.lua | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/mods/PLAYER/mcl_sprint/init.lua b/mods/PLAYER/mcl_sprint/init.lua index 73a518c42..4c0d609c9 100644 --- a/mods/PLAYER/mcl_sprint/init.lua +++ b/mods/PLAYER/mcl_sprint/init.lua @@ -69,18 +69,19 @@ local function setSprinting(playerName, sprinting) --Sets the state of a player local controls = player:get_player_control() if players[playerName] then players[playerName].sprinting = sprinting + local fov_old = players[playerName].fov + local fov_new = fov_old + local fade_time = .15 if sprinting == true or controls.RMB and string.find(player:get_wielded_item():get_name(), "mcl_bows:bow") and player:get_wielded_item():get_name() ~= "mcl_bows:bow" then if sprinting == true then - players[playerName].fov = math.min(players[playerName].fov + 0.05, 1.2) - players[playerName].fade_time = .15 + fov_new = math.min(players[playerName].fov + 0.05, 1.2) else - players[playerName].fov = .7 + fov_new = .7 players[playerName].fade_time = .3 end - player:set_fov(players[playerName].fov, true, players[playerName].fade_time) if sprinting == true then playerphysics.add_physics_factor(player, "speed", "mcl_sprint:sprint", mcl_sprint.SPEED) end @@ -88,12 +89,15 @@ local function setSprinting(playerName, sprinting) --Sets the state of a player and player:get_wielded_item():get_name() ~= "mcl_bows:bow_0" and player:get_wielded_item():get_name() ~= "mcl_bows:bow_1" and player:get_wielded_item():get_name() ~= "mcl_bows:bow_2" then - players[playerName].fov = math.max(players[playerName].fov - 0.05, 1.0) - player:set_fov(players[playerName].fov, true, 0.15) + fov_new = math.max(players[playerName].fov - 0.05, 1.0) if sprinting == false then playerphysics.remove_physics_factor(player, "speed", "mcl_sprint:sprint") end end + if fov_new ~= fov_old then + players[playerName].fov = fov_new + player:set_fov(fov_new, true, fade_time) + end return true end return false From 693a5317efd84eeb1141414e0b48930a09bdceec Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 28 Jul 2021 20:44:48 +0200 Subject: [PATCH 063/271] Fix non-serializable item entity unload crash MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some items, like shulkers or books, can have so much metadata that the corresponding item entity can not be serialized by the Minetest engine. Without this patch, dropping such an item and then moving away crashes Minetest, as it can not serialize the entity with serializeString16() when unloading a map block. The patch resets the overlong metadata of non-serializable item entities. This avoids a crash and makes it possible to retrieve a “sanitized” item without metadata when the mapblock containing the item entity is reloaded. Originally sfan5 guessed the maximum possible item entity serialization size that would not lead to a crash as 65530 bytes, but anon5 calculated it to be actually 65487 bytes. This has been experimentally verified by erlehmann. --- mods/ENTITIES/mcl_item_entity/init.lua | 28 +++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 7869b9d79..7a2758ed0 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -480,7 +480,7 @@ minetest.register_entity(":__builtin:item", { end, get_staticdata = function(self) - return minetest.serialize({ + local data = minetest.serialize({ itemstring = self.itemstring, always_collect = self.always_collect, age = self.age, @@ -488,6 +488,32 @@ minetest.register_entity(":__builtin:item", { _flowing = self._flowing, _removed = self._removed, }) + -- sfan5 guessed that the biggest serializable item + -- entity would have a size of 65530 bytes. This has + -- been experimentally verified to be still too large. + -- + -- anon5 has calculated that the biggest serializable + -- item entity has a size of exactly 65487 bytes: + -- + -- 1. serializeString16 can handle max. 65535 bytes. + -- 2. The following engine metadata is always saved: + -- • 1 byte (version) + -- • 2 byte (length prefix) + -- • 14 byte “__builtin:item” + -- • 4 byte (length prefix) + -- • 2 byte (health) + -- • 3 × 4 byte = 12 byte (position) + -- • 4 byte (yaw) + -- • 1 byte (version 2) + -- • 2 × 4 byte = 8 byte (pitch and roll) + -- 3. This leaves 65487 bytes for the serialization. + if #data > 65487 then -- would crash the engine + local stack = ItemStack(self.itemstring) + stack:get_meta():from_table(nil) + self.itemstring = stack:to_string() + return self:get_staticdata() + end + return data end, on_activate = function(self, staticdata, dtime_s) From 256de2bc365466735900dde62c749035ee700843 Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Thu, 29 Jul 2021 15:46:50 +0200 Subject: [PATCH 064/271] Log warning for non-serializable item entity fix --- mods/ENTITIES/mcl_item_entity/init.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 7a2758ed0..cfd141f04 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -511,6 +511,13 @@ minetest.register_entity(":__builtin:item", { local stack = ItemStack(self.itemstring) stack:get_meta():from_table(nil) self.itemstring = stack:to_string() + minetest.log( + "warning", + "Overlong item entity metadata removed: “" .. + self.itemstring .. + "” had serialized length of " .. + #data + ) return self:get_staticdata() end return data From 27e4bd6d09b8a1ea36e9b0120b5aa7b90d16cc5a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sat, 18 Sep 2021 22:28:20 +0200 Subject: [PATCH 065/271] Fix burning entity packet spam - Use upright_sprite for 3rd person flame display, which is both closer to minecraft and allows for client side texture animation - Take care of flame HUD in the MineClone2Client --- mods/ENTITIES/mcl_burning/api.lua | 18 +++-------- mods/ENTITIES/mcl_burning/init.lua | 51 +++++++++++++----------------- 2 files changed, 27 insertions(+), 42 deletions(-) diff --git a/mods/ENTITIES/mcl_burning/api.lua b/mods/ENTITIES/mcl_burning/api.lua index 4cb19cca1..969985205 100644 --- a/mods/ENTITIES/mcl_burning/api.lua +++ b/mods/ENTITIES/mcl_burning/api.lua @@ -67,14 +67,9 @@ function mcl_burning.set_on_fire(obj, burn_time) end if not storage.burn_time or burn_time >= storage.burn_time then - if obj:is_player() and not storage.fire_hud_id then - storage.fire_hud_id = obj:hud_add({ - hud_elem_type = "image", - position = {x = 0.5, y = 0.5}, - scale = {x = -100, y = -100}, - text = "mcl_burning_entity_flame_animated.png^[opacity:180^[verticalframe:" .. mcl_burning.animation_frames .. ":" .. 1, - z_index = 1000, - }) + if obj:is_player() then + mcl_burning.channels[obj]:send_all(tostring(mcl_burning.animation_frames)) + mcl_burning.channels[obj]:send_all("start") end storage.burn_time = burn_time storage.fire_damage_timer = 0 @@ -95,7 +90,6 @@ function mcl_burning.set_on_fire(obj, burn_time) fire_entity:set_properties({visual_size = size}) fire_entity:set_attach(obj, "", offset, {x = 0, y = 0, z = 0}) local fire_luaentity = fire_entity:get_luaentity() - fire_luaentity:update_frame(obj, storage) for _, other in pairs(minetest.get_objects_inside_radius(fire_entity:get_pos(), 0)) do local other_luaentity = other:get_luaentity() @@ -111,9 +105,7 @@ function mcl_burning.extinguish(obj) if mcl_burning.is_burning(obj) then local storage = mcl_burning.get_storage(obj) if obj:is_player() then - if storage.fire_hud_id then - obj:hud_remove(storage.fire_hud_id) - end + mcl_burning.channels[obj]:send_all("stop") mcl_burning.storage[obj] = {} else storage.burn_time = nil @@ -143,4 +135,4 @@ function mcl_burning.tick(obj, dtime, storage) end end end -end \ No newline at end of file +end diff --git a/mods/ENTITIES/mcl_burning/init.lua b/mods/ENTITIES/mcl_burning/init.lua index 34b7ca2d4..313e75dca 100644 --- a/mods/ENTITIES/mcl_burning/init.lua +++ b/mods/ENTITIES/mcl_burning/init.lua @@ -7,6 +7,7 @@ local get_item_group = minetest.get_item_group mcl_burning = { storage = {}, + channels = {}, animation_frames = tonumber(minetest.settings:get("fire_animation_frames")) or 8 } @@ -54,12 +55,11 @@ minetest.register_on_joinplayer(function(player) end mcl_burning.storage[player] = storage + mcl_burning.channels[player] = minetest.mod_channel_join("mcl_burning:" .. player:get_player_name()) end) minetest.register_on_leaveplayer(function(player) - local storage = mcl_burning.storage[player] - storage.fire_hud_id = nil - player:get_meta():set_string("mcl_burning:data", minetest.serialize(storage)) + player:get_meta():set_string("mcl_burning:data", minetest.serialize(mcl_burning.storage[player])) mcl_burning.storage[player] = nil end) @@ -68,27 +68,28 @@ minetest.register_entity("mcl_burning:fire", { initial_properties = { physical = false, collisionbox = {0, 0, 0, 0, 0, 0}, - visual = "cube", + visual = "upright_sprite", + textures = { + name = "mcl_burning_entity_flame_animated.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1.0, + }, + }, + spritediv = {x = 1, y = mcl_burning.animation_frames}, pointable = false, glow = -1, backface_culling = false, }, animation_frame = 0, animation_timer = 0, - on_step = function(self, dtime) - local parent, storage = self:sanity_check() - - if parent then - self.animation_timer = self.animation_timer + dtime - if self.animation_timer >= 0.1 then - self.animation_timer = 0 - self.animation_frame = self.animation_frame + 1 - if self.animation_frame > mcl_burning.animation_frames - 1 then - self.animation_frame = 0 - end - self:update_frame(parent, storage) - end - else + on_activate = function(self) + self.object:set_sprite({x = 0, y = 0}, mcl_burning.animation_frames, 1.0 / mcl_burning.animation_frames) + end, + on_step = function(self) + if not self:sanity_check() then self.object:remove() end end, @@ -96,23 +97,15 @@ minetest.register_entity("mcl_burning:fire", { local parent = self.object:get_attach() if not parent then - return + return false end local storage = mcl_burning.get_storage(parent) if not storage or not storage.burn_time then - return + return false end - return parent, storage - end, - update_frame = function(self, parent, storage) - local frame_overlay = "^[opacity:180^[verticalframe:" .. mcl_burning.animation_frames .. ":" .. self.animation_frame - local fire_texture = "mcl_burning_entity_flame_animated.png" .. frame_overlay - self.object:set_properties({textures = {"blank.png", "blank.png", fire_texture, fire_texture, fire_texture, fire_texture}}) - if parent:is_player() then - parent:hud_change(storage.fire_hud_id, "text", "mcl_burning_hud_flame_animated.png" .. frame_overlay) - end + return true end, }) From 0e15accada59737c415a0920e93b65a39e5aa2ae Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 19 Sep 2021 11:15:19 +0000 Subject: [PATCH 066/271] Enable fly in creative mode --- mods/MISC/mcl_privs/init.lua | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index 63694ab11..5a23c00fb 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -3,3 +3,14 @@ local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_privilege("maphack", { description = S("Can place and use advanced blocks like mob spawners, command blocks and barriers."), }) + +minetest.register_on_joinplayer(function(player) + local name = user:get_player_name() + local fly = false + if minetest.is_creative_enabled(name) then + fly = true + end + minetest.set_player_privs(name, { + fly = fly, + }) +end) From 18a83fa5d725c51563a2f35bf818b7c9b9041680 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 19 Sep 2021 11:18:09 +0000 Subject: [PATCH 067/271] Fix typo --- mods/MISC/mcl_privs/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index 5a23c00fb..091ddb65e 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -5,7 +5,7 @@ minetest.register_privilege("maphack", { }) minetest.register_on_joinplayer(function(player) - local name = user:get_player_name() + local name = player:get_player_name() local fly = false if minetest.is_creative_enabled(name) then fly = true From fed43586f202cd71fe374560f90b42bef18361ec Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 19 Sep 2021 11:28:07 +0000 Subject: [PATCH 068/271] fix typo --- mods/MISC/mcl_privs/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index 091ddb65e..1d1465676 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -6,7 +6,7 @@ minetest.register_privilege("maphack", { minetest.register_on_joinplayer(function(player) local name = player:get_player_name() - local fly = false + local fly = nil if minetest.is_creative_enabled(name) then fly = true end From f10d579d9c45bdddb7f2ae1935d74821b9c6a8b3 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 19 Sep 2021 12:07:21 +0000 Subject: [PATCH 069/271] Only change fly priv on join if it wasn't revoked or granted --- mods/MISC/mcl_privs/init.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index 1d1465676..c63f7c5c5 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -6,6 +6,10 @@ minetest.register_privilege("maphack", { minetest.register_on_joinplayer(function(player) local name = player:get_player_name() + + local meta = player:get_meta() + if meta:get_int("fly_changed") == 1 then return end + local fly = nil if minetest.is_creative_enabled(name) then fly = true @@ -14,3 +18,13 @@ minetest.register_on_joinplayer(function(player) fly = fly, }) end) + +for _, action in pairs({ "grant", "revoke" }) do + minetest["register_on_priv_" .. action](function(name, _, priv) + if priv == "fly" then + local player = minetest.get_player_by_name(name) + local meta = player:get_meta() + meta:set_int("fly_changed", 1) + end + end) +end \ No newline at end of file From c6003398b5f4149b3eaffe585fde40e8374c721b Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 19 Sep 2021 13:14:36 +0000 Subject: [PATCH 070/271] Remove chain armor recipes, because villagers spawn now --- mods/MISC/mcl_temp_helper_recipes/init.lua | 34 ---------------------- 1 file changed, 34 deletions(-) diff --git a/mods/MISC/mcl_temp_helper_recipes/init.lua b/mods/MISC/mcl_temp_helper_recipes/init.lua index 420cd6c2e..b7607946d 100644 --- a/mods/MISC/mcl_temp_helper_recipes/init.lua +++ b/mods/MISC/mcl_temp_helper_recipes/init.lua @@ -35,40 +35,6 @@ minetest.register_craft({ }, }) -minetest.register_craft({ - output = "mcl_armor:helmet_chain", - recipe = { - { "xpanes:bar_flat", "mcl_core:iron_ingot", "xpanes:bar_flat" }, - { "xpanes:bar_flat", "", "xpanes:bar_flat" }, - } -}) - -minetest.register_craft({ - output = "mcl_armor:leggings_chain", - recipe = { - { "xpanes:bar_flat", "mcl_core:iron_ingot", "xpanes:bar_flat" }, - { "xpanes:bar_flat", "", "xpanes:bar_flat" }, - { "xpanes:bar_flat", "", "xpanes:bar_flat" }, - } -}) - -minetest.register_craft({ - output = "mcl_armor:boots_chain", - recipe = { - { "xpanes:bar_flat", "", "xpanes:bar_flat" }, - { "xpanes:bar_flat", "", "xpanes:bar_flat" }, - } -}) - -minetest.register_craft({ - output = "mcl_armor:chestplate_chain", - recipe = { - { "xpanes:bar_flat", "", "xpanes:bar_flat" }, - { "xpanes:bar_flat", "mcl_core:iron_ingot", "xpanes:bar_flat" }, - { "xpanes:bar_flat", "xpanes:bar_flat", "xpanes:bar_flat" }, - } -}) - -- Make red sand, red sandstone and more craftable in v6 -- NOTE: When you change these, also update mcl_craftguide for the "v6" icon in -- the craft guide! From 3e54acce9db66ff7d330cbcffe20c8ae8ffcd91a Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 20 Sep 2021 09:47:24 +0200 Subject: [PATCH 071/271] fix emerald help text translation --- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.es.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.pl.tr | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.ru.tr | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 0a1cbad37..b064cebbe 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Smaragd Emerald Ore=Smaragderz Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Smaragderz ist das Erz von Smaragden. Es ist sehr selten und kann nur einzeln gefunden werden, nicht in Ansammlungen. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Smaragde sind nicht besonders nützlich, aber man kann sie in der Fertigung durch Goldbarren eintauschen. +Emeralds are used in villager trades as currency.= Flint=Feuerstein Flint is a raw material.=Feuerstein ist ein Rohstoff. Flowing Lava=Fließende Lava diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr index 1e1029c0f..1937babd3 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Esmeralda Emerald Ore=Mena de esmeralda Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=El mineral esmeralda es el mineral de las esmeraldas. Es muy raro y se puede encontrar solo, no en grupos. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Las esmeraldas no son muy útiles por sí mismas, pero pueden cambiarse por lingotes de oro haciendo artesanías. +Emeralds are used in villager trades as currency.= Flint=Pedernal Flint is a raw material.=El pedernal es una materia prima. Flowing Lava=Lava que fluye diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr index 725025e48..64aadd6db 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Emeraude Emerald Ore=Minerai d'Emeraude Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Le minerai d'émeraude produit des émeraudes. Il est très rare et peut être trouvé seul, pas en filons. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Les émeraudes ne sont pas très utiles seules, mais elles peuvent être échangées contre des lingots d'or. +Emeralds are used in villager trades as currency.=Les émeraudes sont utilisées pour faire des échanges avec les villageois. Flint=Silex Flint is a raw material.=Le silex est une matière première. Flowing Lava=Lave qui coule diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr index 832a47830..68dfbd3d0 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Szmaragd Emerald Ore=Ruda szmaragdu Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Ruda szmaragdu jest bardzo rzadka i występuje samotnie, nie w grupach. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Szmaragdy nie są zbyt użyteczne same w sobie, ale można z nich wytworzyć sztabki złota. +Emeralds are used in villager trades as currency.= Flint=Krzemień Flint is a raw material.=Krzemień jest surowym materiałem. Flowing Lava=Płynąca lawa diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr index f93db7c2c..2d5b5462c 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Изумруд Emerald Ore=Изумрудная руда Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Изумрудная руда встречается очень редко и всегда по одному блоку. -Emeralds are not very useful on their own, but they can exchanged for gold ingots by crafting.=Изумруды не очень полезны сами по себе, но их можно обменять на золотые слитки. +Emeralds are used in villager trades as currency.= Flint=Кремень Flint is a raw material.=Кремень это необработанный материал. Flowing Lava=Текущая лава From e0c7e938dea19a3df5efd9fa73b61c85d17640ed Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 20 Sep 2021 07:55:51 +0000 Subject: [PATCH 072/271] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fcore/locale/mcl=5Fcore.fr.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_core/locale/mcl_core.fr.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr index 4d6a3ed43..64aadd6db 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.fr.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Emeraude Emerald Ore=Minerai d'Emeraude Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Le minerai d'émeraude produit des émeraudes. Il est très rare et peut être trouvé seul, pas en filons. -Emeralds are used in villager trades as currency.=Les émeraudes ne sont pas très utiles seules, mais elles peuvent être échangées contre des lingots d'or. +Emeralds are used in villager trades as currency.=Les émeraudes sont utilisées pour faire des échanges avec les villageois. Flint=Silex Flint is a raw material.=Le silex est une matière première. Flowing Lava=Lave qui coule From e8134345d4476be032117723b5397926ff6d5199 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 20 Sep 2021 07:56:25 +0000 Subject: [PATCH 073/271] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fcore/locale/mcl=5Fcore.de.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 8b75dfd40..b064cebbe 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Smaragd Emerald Ore=Smaragderz Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Smaragderz ist das Erz von Smaragden. Es ist sehr selten und kann nur einzeln gefunden werden, nicht in Ansammlungen. -Emeralds are used in villager trades as currency.=Smaragde sind nicht besonders nützlich, aber man kann sie in der Fertigung durch Goldbarren eintauschen. +Emeralds are used in villager trades as currency.= Flint=Feuerstein Flint is a raw material.=Feuerstein ist ein Rohstoff. Flowing Lava=Fließende Lava From b2af00db2201f1ddc20c0b9650c983402aaa10b7 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 20 Sep 2021 07:57:04 +0000 Subject: [PATCH 074/271] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fcore/locale/mcl=5Fcore.es.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_core/locale/mcl_core.es.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr index d77f45dc2..1937babd3 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.es.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.es.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Esmeralda Emerald Ore=Mena de esmeralda Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=El mineral esmeralda es el mineral de las esmeraldas. Es muy raro y se puede encontrar solo, no en grupos. -Emeralds are used in villager trades as currency.=Las esmeraldas no son muy útiles por sí mismas, pero pueden cambiarse por lingotes de oro haciendo artesanías. +Emeralds are used in villager trades as currency.= Flint=Pedernal Flint is a raw material.=El pedernal es una materia prima. Flowing Lava=Lava que fluye From e36a8c5acf48d473db9ae5807b176b94a779e15c Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 20 Sep 2021 07:58:25 +0000 Subject: [PATCH 075/271] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fcore/locale/mcl=5Fcore.pl.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_core/locale/mcl_core.pl.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr index f8dbbde6b..68dfbd3d0 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.pl.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Szmaragd Emerald Ore=Ruda szmaragdu Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Ruda szmaragdu jest bardzo rzadka i występuje samotnie, nie w grupach. -Emeralds are used in villager trades as currency.=Szmaragdy nie są zbyt użyteczne same w sobie, ale można z nich wytworzyć sztabki złota. +Emeralds are used in villager trades as currency.= Flint=Krzemień Flint is a raw material.=Krzemień jest surowym materiałem. Flowing Lava=Płynąca lawa From b0cf07a020ba353545465b8909fd88ad8725c4cd Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 20 Sep 2021 07:59:00 +0000 Subject: [PATCH 076/271] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'mods/ITEMS?= =?UTF-8?q?/mcl=5Fcore/locale/mcl=5Fcore.ru.tr'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/mcl_core/locale/mcl_core.ru.tr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr index ad9d863b2..2d5b5462c 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.ru.tr @@ -95,7 +95,7 @@ Dirt acts as a soil for a few plants. When in light, this block may grow a grass Emerald=Изумруд Emerald Ore=Изумрудная руда Emerald ore is the ore of emeralds. It is very rare and can be found alone, not in clusters.=Изумрудная руда встречается очень редко и всегда по одному блоку. -Emeralds are used in villager trades as currency.=Изумруды не очень полезны сами по себе, но их можно обменять на золотые слитки. +Emeralds are used in villager trades as currency.= Flint=Кремень Flint is a raw material.=Кремень это необработанный материал. Flowing Lava=Текущая лава From 89e90b13eb53085a801c37c639a796a0a917cac0 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 20 Sep 2021 14:16:59 +0000 Subject: [PATCH 077/271] Use on_newplayer --- mods/MISC/mcl_privs/init.lua | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index c63f7c5c5..302557f86 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -4,12 +4,9 @@ minetest.register_privilege("maphack", { description = S("Can place and use advanced blocks like mob spawners, command blocks and barriers."), }) -minetest.register_on_joinplayer(function(player) +minetest.register_on_newplayer(function(player) local name = player:get_player_name() - local meta = player:get_meta() - if meta:get_int("fly_changed") == 1 then return end - local fly = nil if minetest.is_creative_enabled(name) then fly = true @@ -18,13 +15,3 @@ minetest.register_on_joinplayer(function(player) fly = fly, }) end) - -for _, action in pairs({ "grant", "revoke" }) do - minetest["register_on_priv_" .. action](function(name, _, priv) - if priv == "fly" then - local player = minetest.get_player_by_name(name) - local meta = player:get_meta() - meta:set_int("fly_changed", 1) - end - end) -end \ No newline at end of file From df1d8077e6123cef815bc4f30dd02838b9b84dec Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 21 Sep 2021 18:07:36 +0000 Subject: [PATCH 078/271] Some fixes for mcl_beds - remove enable_bed_night_skip setting (mcl_playersSleepingPercentage setting can be used to enable disable night skip) - make it possible to change mcl_playersSleepingPercentage ingame - fix weird bug which allowed only numbers <= 0 --- mods/ITEMS/mcl_beds/functions.lua | 39 +++++++++++++++---------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index 01ccec851..e7306b40a 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -9,36 +9,36 @@ local weather_mod = minetest.get_modpath("mcl_weather") local explosions_mod = minetest.get_modpath("mcl_explosions") local spawn_mod = minetest.get_modpath("mcl_spawn") local worlds_mod = minetest.get_modpath("mcl_worlds") -local players_in_bed_setting = tonumber(minetest.settings:get("mcl_playersSleepingPercentage")) -- Helper functions local function get_look_yaw(pos) local n = minetest.get_node(pos) - if n.param2 == 1 then - return math.pi / 2, n.param2 - elseif n.param2 == 3 then - return -math.pi / 2, n.param2 - elseif n.param2 == 0 then - return math.pi, n.param2 + local param = n.param2 + if param == 1 then + return math.pi / 2, param + elseif param == 3 then + return -math.pi / 2, param + elseif param == 0 then + return math.pi, param else - return 0, n.param2 + return 0, param end end +local function players_in_bed_setting() + return tonumber(minetest.settings:get("mcl_playersSleepingPercentage")) +end + local function is_night_skip_enabled() - local enable_night_skip = minetest.settings:get_bool("enable_bed_night_skip") - if enable_night_skip == nil then - enable_night_skip = true - end - return enable_night_skip + return players_in_bed_setting() <= 100 end local function check_in_beds(players) if not players then players = minetest.get_connected_players() end - return players_in_bed_setting <= (#mcl_beds.player * 100) / #players + return players_in_bed_setting() <= (player_in_bed * 100) / #players end -- These monsters do not prevent sleep @@ -190,8 +190,8 @@ end local function update_formspecs(finished, ges) local ges = ges or #minetest.get_connected_players() local form_n = "size[12,5;true]" - local all_in_bed = players_in_bed_setting <= (player_in_bed * 100) / ges - local night_skip = is_night_skip_enabled() and players_in_bed_setting <= 100 + local all_in_bed = players_in_bed_setting() <= (player_in_bed * 100) / ges + local night_skip = is_night_skip_enabled() local button_leave = "button_exit[4,3;4,0.75;leave;"..F(S("Leave bed")).."]" local button_abort = "button_exit[4,3;4,0.75;leave;"..F(S("Abort sleep")).."]" local bg_presleep = "bgcolor[#00000080;true]" @@ -204,7 +204,7 @@ local function update_formspecs(finished, ges) return elseif not is_sp then local text = S("Players in bed: @1/@2", player_in_bed, ges) - if not night_skip or players_in_bed_setting > 100 then + if not night_skip then text = text .. "\n" .. S("Note: Night skip is disabled.") form_n = form_n .. bg_presleep form_n = form_n .. button_leave @@ -214,10 +214,10 @@ local function update_formspecs(finished, ges) form_n = form_n .. button_abort else local comment = "You will fall asleep when " - if players_in_bed_setting == 100 then + if players_in_bed_setting() == 100 then comment = S(comment .. "all players are in bed.") else - comment = S(comment .. "@1% of all players are in bed.", players_in_bed_setting) + comment = S(comment .. "@1% of all players are in bed.", players_in_bed_setting()) end text = text .. "\n" .. comment form_n = form_n .. bg_presleep @@ -347,7 +347,6 @@ function mcl_beds.on_rightclick(pos, player, is_top) end end - -- Callbacks minetest.register_on_joinplayer(function(player) local meta = player:get_meta() From 71f448537cb523c9f8287b630ccce6f1ddd91cca Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 21 Sep 2021 18:14:24 +0000 Subject: [PATCH 079/271] Remove unused setting from settingtypes.txt --- settingtypes.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/settingtypes.txt b/settingtypes.txt index 89e11833f..542711675 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -36,11 +36,9 @@ enable_bed_respawn (Respawn at bed) bool true # How many players have to sleep to skip the night, in percent. # Setting to 0 will mean 1 player is always enough to skip the night. Setting above 100 will prevent skipping the night. # 100 by default. +# The setting can be changed ingame using `/set mcl_playersSleepingPercentage ` mcl_playersSleepingPercentage (Players Sleeping Percentage) int 100 -# If enabled, the night can be skipped if all players are in bed. -# This setting is only read at startup. -enable_bed_night_skip (Skip night when sleeping) bool true # Normally, players drop all their items when they die. Enable this # setting, so players always keep their inventory on death. mcl_keepInventory (Keep inventory on death) bool false From e83438e42cb677e6336f52e5e17973fcbef5663c Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 21 Sep 2021 18:19:07 +0000 Subject: [PATCH 080/271] Update mcl_bed README.txt --- mods/ITEMS/mcl_beds/README.txt | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/mods/ITEMS/mcl_beds/README.txt b/mods/ITEMS/mcl_beds/README.txt index cda6ebd92..34b493702 100644 --- a/mods/ITEMS/mcl_beds/README.txt +++ b/mods/ITEMS/mcl_beds/README.txt @@ -12,15 +12,7 @@ Authors of media (textures) BlockMen (CC BY-SA 3.0) This mod adds a bed to Minetest which allows to skip the night. -To sleep, rightclick the bed. If playing in singleplayer mode the night gets skipped -immediately. If playing multiplayer you get shown how many other players are in bed too, -if all players are sleeping the night gets skipped. The night skip can be forced if more -than 50% of the players are lying in bed and use this option. - -Another feature is a controlled respawning. If you have slept in bed (not just lying in -it) your respawn point is set to the beds location and you will respawn there after +To sleep, rightclick the bed. +Another feature is a controlled respawning. If you have slept in bed your respawn point is set to the beds location and you will respawn there after death. -You can disable the respawn at beds by setting "enable_bed_respawn = false" in -minetest.conf. -You can disable the night skip feature by setting "enable_bed_night_skip = false" in -minetest.conf or by using the /set command in-game. +Use the mcl_playersSleepingPercentage setting to enable/disable night skipping or set a percentage of how many players need to sleep to skip the night. \ No newline at end of file From 91d0dc38e5be40e2c8c4674f562e658cf74c0072 Mon Sep 17 00:00:00 2001 From: Artem Arbatsky Date: Fri, 24 Sep 2021 16:50:54 +0500 Subject: [PATCH 081/271] Add missing call for on_die function --- mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua index 45e46d3db..03e6789ed 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua @@ -122,7 +122,10 @@ mobs.death_logic = function(self, dtime) if self.death_animation_timer >= 1.25 then item_drop(self,false,1) mobs.death_effect(self) - mcl_experience.throw_experience(self.object:get_pos(), math_random(self.xp_min, self.xp_max)) + mcl_experience.throw_experience(self.object:get_pos(), math_random(self.xp_min, self.xp_max)) + if self.on_die then + self.on_die(self, self.object:get_pos()) + end self.object:remove() return end @@ -155,4 +158,4 @@ mobs.death_logic = function(self, dtime) if self.pause_timer <= 0 then mobs.set_velocity(self,0) end -end \ No newline at end of file +end From 8697b38d60325f289eb75fd19b83e86e877946bc Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 27 Sep 2021 20:00:11 +0000 Subject: [PATCH 082/271] Remove on_newplayer ... --- mods/MISC/mcl_privs/init.lua | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index 302557f86..c63f7c5c5 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -4,9 +4,12 @@ minetest.register_privilege("maphack", { description = S("Can place and use advanced blocks like mob spawners, command blocks and barriers."), }) -minetest.register_on_newplayer(function(player) +minetest.register_on_joinplayer(function(player) local name = player:get_player_name() + local meta = player:get_meta() + if meta:get_int("fly_changed") == 1 then return end + local fly = nil if minetest.is_creative_enabled(name) then fly = true @@ -15,3 +18,13 @@ minetest.register_on_newplayer(function(player) fly = fly, }) end) + +for _, action in pairs({ "grant", "revoke" }) do + minetest["register_on_priv_" .. action](function(name, _, priv) + if priv == "fly" then + local player = minetest.get_player_by_name(name) + local meta = player:get_meta() + meta:set_int("fly_changed", 1) + end + end) +end \ No newline at end of file From 03be73656648136fdabff2dd68c6e44ed184f475 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 27 Sep 2021 20:13:12 +0000 Subject: [PATCH 083/271] Dont skip night if no players are in bed --- mods/ITEMS/mcl_beds/functions.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index e7306b40a..e2bece033 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -38,6 +38,9 @@ local function check_in_beds(players) if not players then players = minetest.get_connected_players() end + if player_in_bed < 0 then + return false + end return players_in_bed_setting() <= (player_in_bed * 100) / #players end From 16c73c1cb652b02f77e6140e9ad41f602d5f29aa Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 28 Sep 2021 13:16:19 +0000 Subject: [PATCH 084/271] Add forgotten `=` --- mods/ITEMS/mcl_beds/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index e2bece033..062219294 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -38,7 +38,7 @@ local function check_in_beds(players) if not players then players = minetest.get_connected_players() end - if player_in_bed < 0 then + if player_in_bed <= 0 then return false end return players_in_bed_setting() <= (player_in_bed * 100) / #players From e9437e9e1e623a493ecf2abbac91fefd775c5aa4 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Wed, 29 Sep 2021 21:06:51 +0200 Subject: [PATCH 085/271] fix crash then using function in `_mcl_armor_[texture, preview]` tool field --- mods/ITEMS/mcl_enchanting/engine.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index d2a749947..6050aeed2 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -270,8 +270,14 @@ function mcl_enchanting.initialize() new_def.groups.not_in_creative_inventory = 1 new_def.groups.not_in_craft_guide = 1 new_def.groups.enchanted = 1 - new_def._mcl_armor_texture = new_def._mcl_armor_texture and new_def._mcl_armor_texture .. mcl_enchanting.overlay - new_def._mcl_armor_preview = new_def._mcl_armor_preview and new_def._mcl_armor_preview .. mcl_enchanting.overlay + + if new_def._mcl_armor_texture and not type(new_def._mcl_armor_texture) == "function" then + new_def._mcl_armor_texture = new_def._mcl_armor_texture .. mcl_enchanting.overlay + end + if new_def._mcl_armor_preview and not type(new_def._mcl_armor_preview) == "function" then + new_def._mcl_armor_preview = new_def._mcl_armor_preview .. mcl_enchanting.overlay + end + new_def._mcl_enchanting_enchanted_tool = new_name new_def.after_use = get_after_use_callback(itemdef) local register_list = register_item_list From a410d173069baf3d38f5fe5a704e4db562e5dd8a Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 30 Sep 2021 20:14:13 +0000 Subject: [PATCH 086/271] Fix that all of new players' default_privs are removed --- mods/MISC/mcl_privs/init.lua | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/mods/MISC/mcl_privs/init.lua b/mods/MISC/mcl_privs/init.lua index c63f7c5c5..f06ff3582 100644 --- a/mods/MISC/mcl_privs/init.lua +++ b/mods/MISC/mcl_privs/init.lua @@ -6,7 +6,6 @@ minetest.register_privilege("maphack", { minetest.register_on_joinplayer(function(player) local name = player:get_player_name() - local meta = player:get_meta() if meta:get_int("fly_changed") == 1 then return end @@ -14,12 +13,12 @@ minetest.register_on_joinplayer(function(player) if minetest.is_creative_enabled(name) then fly = true end - minetest.set_player_privs(name, { - fly = fly, - }) + local player_privs = minetest.get_player_privs(name) + player_privs.fly = fly + minetest.set_player_privs(name, player_privs) end) -for _, action in pairs({ "grant", "revoke" }) do +for _, action in pairs({"grant", "revoke"}) do minetest["register_on_priv_" .. action](function(name, _, priv) if priv == "fly" then local player = minetest.get_player_by_name(name) From 8e3f9d216944d258cd385223db037ef1882deb63 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 09:22:27 +0000 Subject: [PATCH 087/271] add basic lightning API --- mods/ENVIRONMENT/lightning/init.lua | 75 ++++++++++++++++++----------- 1 file changed, 46 insertions(+), 29 deletions(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 3d5955d6e..3230f0b0a 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -24,13 +24,14 @@ local get_objects_inside_radius = minetest.get_objects_inside_radius local get_item_group = minetest.get_item_group lightning = { - interval_low = 17, - interval_high = 503, - range_h = 100, - range_v = 50, - size = 100, - -- disable this to stop lightning mod from striking - auto = true, + interval_low = 17, + interval_high = 503, + range_h = 100, + range_v = 50, + size = 100, + -- disable this to stop lightning mod from striking + auto = true, + on_strike_functions = {}, } local rng = PcgRandom(32321123312123) @@ -54,6 +55,18 @@ end minetest.register_globalstep(revertsky) +-- lightning strike API + +-- See README.md +--[[ + lightning.register_on_strike(function(pos, pos2, objects) + -- code + end) +]] +function lightning.register_on_strike(func) + table.insert(lightning.on_strike_functions, func) +end + -- select a random strike point, midpoint local function choose_pos(pos) if not pos then @@ -79,14 +92,14 @@ local function choose_pos(pos) pos.z = math.floor(pos.z - (lightning.range_h / 2) + rng:next(1, lightning.range_h)) end - local b, pos2 = line_of_sight(pos, {x = pos.x, y = pos.y - lightning.range_v, z = pos.z}, 1) + local b, pos2 = line_of_sight(pos, { x = pos.x, y = pos.y - lightning.range_v, z = pos.z }, 1) -- nothing but air found if b then return nil, nil end - local n = get_node({x = pos2.x, y = pos2.y - 1/2, z = pos2.z}) + local n = get_node({ x = pos2.x, y = pos2.y - 1/2, z = pos2.z }) if n.name == "air" or n.name == "ignore" then return nil, nil end @@ -94,7 +107,6 @@ local function choose_pos(pos) return pos, pos2 end --- lightning strike API -- * pos: optional, if not given a random pos will be chosen -- * returns: bool - success if a strike happened function lightning.strike(pos) @@ -108,21 +120,30 @@ function lightning.strike(pos) if not pos then return false end + local objects = get_objects_inside_radius(pos2, 3.5) + if lightning.on_strike_functions then + for _, func in pairs(lightning.on_strike_functions) do + func(pos, pos2, objects) + end + end +end + + +lightning.register_on_strike(function(pos, pos2, objects) + local particle_pos = vector.offset(pos2, 0, (lightning.size / 2) + 0.5, 0) + local particle_size = lightning.size * 10 + local time = 0.2 add_particlespawner({ amount = 1, - time = 0.2, + time = time, -- make it hit the top of a block exactly with the bottom - minpos = {x = pos2.x, y = pos2.y + (lightning.size / 2) + 1/2, z = pos2.z }, - maxpos = {x = pos2.x, y = pos2.y + (lightning.size / 2) + 1/2, z = pos2.z }, - minvel = {x = 0, y = 0, z = 0}, - maxvel = {x = 0, y = 0, z = 0}, - minacc = {x = 0, y = 0, z = 0}, - maxacc = {x = 0, y = 0, z = 0}, - minexptime = 0.2, - maxexptime = 0.2, - minsize = lightning.size * 10, - maxsize = lightning.size * 10, + minpos = particle_pos, + maxpos = particle_pos, + minexptime = time, + maxexptime = time, + minsize = particle_size, + maxsize = particle_size, collisiondetection = true, vertical = true, -- to make it appear hitting the node that will get set on fire, make sure @@ -135,10 +156,7 @@ function lightning.strike(pos) sound_play({ name = "lightning_thunder", gain = 10 }, { pos = pos, max_hear_distance = 500 }, true) -- damage nearby objects, transform mobs - -- TODO: use an API insteed of hardcoding this behaviour - local objs = get_objects_inside_radius(pos2, 3.5) - for o=1, #objs do - local obj = objs[o] + for _, obj in pairs(objects) do local lua = obj:get_luaentity() -- pig → zombie pigman (no damage) if lua and lua.name == "mobs_mc:pig" then @@ -155,7 +173,7 @@ function lightning.strike(pos) end obj:set_properties({textures = lua.base_texture}) -- villager → witch (no damage) - --elseif lua and lua.name == "mobs_mc:villager" then + -- elseif lua and lua.name == "mobs_mc:villager" then -- Witches are incomplete, this code is unused -- TODO: Enable this code when witches are working. --[[ @@ -172,7 +190,7 @@ function lightning.strike(pos) obj:set_yaw(rot) -- Other objects: Just damage else - mcl_util.deal_damage(obj, 5, {type = "lightning_bolt"}) + mcl_util.deal_damage(obj, 5, { type = "lightning_bolt" }) end end @@ -223,8 +241,7 @@ function lightning.strike(pos) end end end - -end +end) -- if other mods disable auto lightning during initialization, don't trigger the first lightning. after(5, function(dtime) From e4af02ea526ef32da38ca7094f13b1c7c128bc83 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 09:54:58 +0000 Subject: [PATCH 088/271] Add function to replace mobs --- mods/CORE/mcl_util/init.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index a7504af08..363b9b5fe 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -538,3 +538,12 @@ function mcl_util.get_object_name(object) return luaentity.nametag and luaentity.nametag ~= "" and luaentity.nametag or luaentity.description or luaentity.name end end + +function mcl_util.replace_mob(obj, mob) + local rot = obj:get_yaw() + local pos = obj:get_pos() + obj:remove() + obj = minetest.add_entity(pos, mob) + obj:set_yaw(rot) + return obj +end From 463fe2af5f3343dcecefec9eb5147f34ec04cb3d Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 09:57:36 +0000 Subject: [PATCH 089/271] use mcl_util.replace_mob function to simplify lightning code --- mods/ENVIRONMENT/lightning/init.lua | 38 +++++++---------------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 3230f0b0a..5568e63fc 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -128,8 +128,6 @@ function lightning.strike(pos) end end - - lightning.register_on_strike(function(pos, pos2, objects) local particle_pos = vector.offset(pos2, 0, (lightning.size / 2) + 0.5, 0) local particle_size = lightning.size * 10 @@ -158,37 +156,19 @@ lightning.register_on_strike(function(pos, pos2, objects) -- damage nearby objects, transform mobs for _, obj in pairs(objects) do local lua = obj:get_luaentity() - -- pig → zombie pigman (no damage) if lua and lua.name == "mobs_mc:pig" then - local rot = obj:get_yaw() - obj:remove() - obj = add_entity(pos2, "mobs_mc:pigman") - obj:set_yaw(rot) - -- mooshroom: toggle color red/brown (no damage) + mcl_util.replace_mob(obj, "mobs_mc:pigman") elseif lua and lua.name == "mobs_mc:mooshroom" then if lua.base_texture[1] == "mobs_mc_mooshroom.png" then lua.base_texture = { "mobs_mc_mooshroom_brown.png", "mobs_mc_mushroom_brown.png" } else lua.base_texture = { "mobs_mc_mooshroom.png", "mobs_mc_mushroom_red.png" } end - obj:set_properties({textures = lua.base_texture}) - -- villager → witch (no damage) - -- elseif lua and lua.name == "mobs_mc:villager" then - -- Witches are incomplete, this code is unused - -- TODO: Enable this code when witches are working. - --[[ - local rot = obj:get_yaw() - obj:remove() - obj = minetest.add_entity(pos2, "mobs_mc:witch") - obj:set_yaw(rot) - ]] - -- charged creeper + obj:set_properties({ textures = lua.base_texture }) + elseif lua and lua.name == "mobs_mc:villager" then + mcl_util.replace_mob(obj, "mobs_mc:witch") elseif lua and lua.name == "mobs_mc:creeper" then - local rot = obj:get_yaw() - obj:remove() - obj = add_entity(pos2, "mobs_mc:creeper_charged") - obj:set_yaw(rot) - -- Other objects: Just damage + mcl_util.replace_mob(obj, "mobs_mc:creeper_charged") else mcl_util.deal_damage(obj, 5, { type = "lightning_bolt" }) end @@ -204,7 +184,7 @@ lightning.register_on_strike(function(pos, pos2, objects) local name = player:get_player_name() if ps[name] == nil then ps[name] = {p = player, sky = sky} - mcl_weather.skycolor.add_layer("lightning", {{r=255,g=255,b=255}}, true) + mcl_weather.skycolor.add_layer("lightning", { { r = 255, g = 255, b = 255 } }, true) mcl_weather.skycolor.active = true end end @@ -219,7 +199,7 @@ lightning.register_on_strike(function(pos, pos2, objects) if rng:next(1,100) <= 3 then skeleton_lightning = true end - if get_item_group(get_node({x = pos2.x, y = pos2.y - 1, z = pos2.z}).name, "liquid") < 1 then + if get_item_group(get_node({ x = pos2.x, y = pos2.y - 1, z = pos2.z }).name, "liquid") < 1 then if get_node(pos2).name == "air" then -- Low chance for a lightning to spawn skeleton horse + skeletons if skeleton_lightning then @@ -228,7 +208,7 @@ lightning.register_on_strike(function(pos, pos2, objects) local angle, posadd angle = math.random(0, math.pi*2) for i=1,3 do - posadd = {x=math.cos(angle),y=0,z=math.sin(angle)} + posadd = { x=math.cos(angle),y=0,z=math.sin(angle) } posadd = vector.normalize(posadd) local mob = add_entity(vector.add(pos2, posadd), "mobs_mc:skeleton") mob:set_yaw(angle-math.pi/2) @@ -237,7 +217,7 @@ lightning.register_on_strike(function(pos, pos2, objects) -- Cause a fire else - set_node(pos2, {name = "mcl_fire:fire"}) + set_node(pos2, { name = "mcl_fire:fire" }) end end end From fe91d7f3e0a5c629cb1f3abad593671ee851ee39 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 10:07:45 +0000 Subject: [PATCH 090/271] use mcl_util.replace_mob function to simplify dispenser code --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 82d53c806..47acacbb9 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -203,12 +203,8 @@ local dispenserdef = { else minetest.add_item(droppos, mobs_mc.items.mushroom_red .. " 5") end - local oldyaw = obj:get_yaw() - obj:remove() - local cow = minetest.add_entity(pos, "mobs_mc:cow") - cow:set_yaw(oldyaw) - obj = cow - entity = cow:get_luaentity() + obj = mcl_util.replace_mob(obj, "mobs_mc:cow") + entity = obj:get_luaentity() used = true end if used then From 9188467a6adfdc6bd8edfeb8f156c510ce7ab1b0 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 12:31:19 +0000 Subject: [PATCH 091/271] add API.md for lightning mod --- mods/ENVIRONMENT/lightning/API.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 mods/ENVIRONMENT/lightning/API.md diff --git a/mods/ENVIRONMENT/lightning/API.md b/mods/ENVIRONMENT/lightning/API.md new file mode 100644 index 000000000..6a4dd11cf --- /dev/null +++ b/mods/ENVIRONMENT/lightning/API.md @@ -0,0 +1,31 @@ +# lightning +Lightning mod for MineClone2 with the following API: + +## lightning.register_on_strike(function(pos, pos2, objects)) +Custom function called when a lightning strikes. + +* `pos`: impact position +* `pos2`: rounded node position where fire is placed +* `objects`: table with ObjectRefs of all objects within a radius of 3.5 around pos2 + +## lightning.strike(pos) +Let a lightning strike. + +* pos: optional, if not given a random pos will be chosen +* returns: bool - success if a strike happened + + +### Examples: + +``` +lightning.register_on_strike(function(pos, pos2, objects) + for _, obj in pairs(objects) do + obj:remove() + end + minetest.add_entity(pos, "mobs_mc:sheep") +end) + +minetest.register_on_respawnplayer(function(player) + lightning.strike(player:get_pos()) +end) +``` \ No newline at end of file From 72ea9069bd848eb4bcbd030bc32b859370c5cef5 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 12:35:05 +0000 Subject: [PATCH 092/271] correct lightning API.md a bit --- mods/ENVIRONMENT/lightning/API.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENVIRONMENT/lightning/API.md b/mods/ENVIRONMENT/lightning/API.md index 6a4dd11cf..ad4f0a3b4 100644 --- a/mods/ENVIRONMENT/lightning/API.md +++ b/mods/ENVIRONMENT/lightning/API.md @@ -11,8 +11,8 @@ Custom function called when a lightning strikes. ## lightning.strike(pos) Let a lightning strike. -* pos: optional, if not given a random pos will be chosen -* returns: bool - success if a strike happened +* `pos`: optional, if not given a random pos will be chosen +* `returns`: bool - success if a strike happened ### Examples: From 03829dd51884c92fae3d8ee0dd04f3dad1155dec Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 12:35:50 +0000 Subject: [PATCH 093/271] fix typo --- mods/ENVIRONMENT/lightning/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 5568e63fc..b234092af 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -57,7 +57,7 @@ minetest.register_globalstep(revertsky) -- lightning strike API --- See README.md +-- See API.md --[[ lightning.register_on_strike(function(pos, pos2, objects) -- code From 0584d16569103bb5cd15c5e5041efb842d5b8784 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 9 Sep 2021 13:21:33 +0000 Subject: [PATCH 094/271] add lightning API support for mobs --- mods/ENVIRONMENT/lightning/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index b234092af..83494462f 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -156,6 +156,10 @@ lightning.register_on_strike(function(pos, pos2, objects) -- damage nearby objects, transform mobs for _, obj in pairs(objects) do local lua = obj:get_luaentity() + if lua and lua._on_strike then + lua._on_strike(lua, pos, pos2, objects) + end + -- remove this when mob API is done if lua and lua.name == "mobs_mc:pig" then mcl_util.replace_mob(obj, "mobs_mc:pigman") elseif lua and lua.name == "mobs_mc:mooshroom" then From 9ccf8de606c4ce4e6b903ac3ce6727d01f3d5160 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 9 Oct 2021 14:41:56 +0000 Subject: [PATCH 095/271] Fix crash on startup if mcl_playersSleepingPercentage is not defined (#1874) --- mods/ITEMS/mcl_beds/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index 062219294..b8478fc1f 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -27,7 +27,7 @@ local function get_look_yaw(pos) end local function players_in_bed_setting() - return tonumber(minetest.settings:get("mcl_playersSleepingPercentage")) + return tonumber(minetest.settings:get("mcl_playersSleepingPercentage")) or 100 end local function is_night_skip_enabled() From 1c458a2e7258565e0d98050263cf98ec17607c71 Mon Sep 17 00:00:00 2001 From: epCode Date: Fri, 15 Oct 2021 12:00:37 -0700 Subject: [PATCH 096/271] Add crossbows --- mods/ITEMS/mcl_bows/arrow.lua | 6 +- mods/ITEMS/mcl_bows/crossbow.lua | 454 ++++++++ mods/ITEMS/mcl_bows/init.lua | 6 + .../ITEMS/mcl_bows/models/mcl_bows_rocket.b3d | Bin 0 -> 11758 bytes .../ITEMS/mcl_bows/models/mcl_bows_rocket.mtl | 10 + .../ITEMS/mcl_bows/models/mcl_bows_rocket.obj | 1016 +++++++++++++++++ mods/ITEMS/mcl_bows/rocket.lua | 706 ++++++++++++ .../sounds/mcl_bows_crossbow_drawback_0.ogg | Bin 0 -> 13529 bytes .../sounds/mcl_bows_crossbow_drawback_1.ogg | Bin 0 -> 13401 bytes .../sounds/mcl_bows_crossbow_drawback_2.ogg | Bin 0 -> 10139 bytes .../sounds/mcl_bows_crossbow_load.ogg | Bin 0 -> 7627 bytes .../sounds/mcl_bows_crossbow_shoot.ogg | Bin 0 -> 9767 bytes .../mcl_bows/sounds/mcl_bows_firework.ogg | Bin 0 -> 42143 bytes .../sounds/mcl_bows_firework_soft.ogg | Bin 0 -> 55786 bytes .../mcl_bows/textures/mcl_bows_crossbow.png | Bin 0 -> 2311 bytes .../mcl_bows/textures/mcl_bows_crossbow_0.png | Bin 0 -> 2369 bytes .../mcl_bows/textures/mcl_bows_crossbow_1.png | Bin 0 -> 2383 bytes .../mcl_bows/textures/mcl_bows_crossbow_2.png | Bin 0 -> 2362 bytes .../mcl_bows/textures/mcl_bows_crossbow_3.png | Bin 0 -> 2794 bytes .../textures/mcl_bows_firework_blue.png | Bin 0 -> 630 bytes .../textures/mcl_bows_firework_green.png | Bin 0 -> 627 bytes .../textures/mcl_bows_firework_red.png | Bin 0 -> 622 bytes .../textures/mcl_bows_firework_white.png | Bin 0 -> 1577 bytes .../textures/mcl_bows_firework_yellow.png | Bin 0 -> 1717 bytes .../mcl_bows/textures/mcl_bows_rocket.png | Bin 0 -> 2133 bytes .../textures/mcl_bows_rocket_particle.png | Bin 0 -> 4675 bytes mods/ITEMS/mcl_enchanting/enchantments.lua | 14 +- mods/ITEMS/mcl_mobspawners/init.lua | 3 +- mods/ITEMS/mcl_potions/tipped_arrow.lua | 2 +- mods/PLAYER/mcl_player/init.lua | 6 +- mods/PLAYER/mcl_playerplus/init.lua | 13 + 31 files changed, 2221 insertions(+), 15 deletions(-) create mode 100644 mods/ITEMS/mcl_bows/crossbow.lua create mode 100644 mods/ITEMS/mcl_bows/models/mcl_bows_rocket.b3d create mode 100644 mods/ITEMS/mcl_bows/models/mcl_bows_rocket.mtl create mode 100644 mods/ITEMS/mcl_bows/models/mcl_bows_rocket.obj create mode 100644 mods/ITEMS/mcl_bows/rocket.lua create mode 100644 mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_drawback_0.ogg create mode 100644 mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_drawback_1.ogg create mode 100644 mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_drawback_2.ogg create mode 100644 mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_load.ogg create mode 100644 mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_shoot.ogg create mode 100644 mods/ITEMS/mcl_bows/sounds/mcl_bows_firework.ogg create mode 100644 mods/ITEMS/mcl_bows/sounds/mcl_bows_firework_soft.ogg create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_0.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_1.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_2.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_3.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_firework_blue.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_firework_green.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_firework_red.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_firework_white.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_firework_yellow.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_rocket.png create mode 100644 mods/ITEMS/mcl_bows/textures/mcl_bows_rocket_particle.png diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index 9a22ee622..343707617 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -43,7 +43,7 @@ S("An arrow fired from a bow has a regular damage of 1-9. At full charge, there' S("Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons."), _doc_items_usagehelp = S("To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it."), inventory_image = "mcl_bows_arrow_inv.png", - groups = { ammo=1, ammo_bow=1, ammo_bow_regular=1 }, + groups = { ammo=1, ammo_bow=1, ammo_bow_regular=1, ammo_crossbow=1 }, _on_dispense = function(itemstack, dispenserpos, droppos, dropnode, dropdir) -- Shoot arrow local shootpos = vector.add(dispenserpos, vector.multiply(dropdir, 0.51)) @@ -324,7 +324,9 @@ function ARROW_ENTITY.on_step(self, dtime) end if not obj:is_player() then mcl_burning.extinguish(self.object) - self.object:remove() + if self._piercing == 0 then + self.object:remove() + end end return end diff --git a/mods/ITEMS/mcl_bows/crossbow.lua b/mods/ITEMS/mcl_bows/crossbow.lua new file mode 100644 index 000000000..e3124156b --- /dev/null +++ b/mods/ITEMS/mcl_bows/crossbow.lua @@ -0,0 +1,454 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +mcl_bows_s = {} + +-- local arrows = { +-- ["mcl_bows:arrow"] = "mcl_bows:arrow_entity", +-- } + +local GRAVITY = 9.81 +local BOW_DURABILITY = 385 + +-- Charging time in microseconds +local _BOW_CHARGE_TIME_HALF = 350000 -- bow level 1 +local _BOW_CHARGE_TIME_FULL = 900000 -- bow level 2 (full charge) + +local BOW_CHARGE_TIME_HALF = 350000 -- bow level 1 +local BOW_CHARGE_TIME_FULL = 900000 -- bow level 2 (full charge) + +-- Factor to multiply with player speed while player uses bow +-- This emulates the sneak speed. +local PLAYER_USE_CROSSBOW_SPEED = tonumber(minetest.settings:get("movement_speed_crouch")) / tonumber(minetest.settings:get("movement_speed_walk")) + +-- TODO: Use Minecraft speed (ca. 53 m/s) +-- Currently nerfed because at full speed the arrow would easily get out of the range of the loaded map. +local BOW_MAX_SPEED = 68 + +local function play_load_sound(id, pos) + minetest.sound_play("mcl_bows_crossbow_drawback_"..id, {pos=pos, max_hear_distance=12}, true) +end + +--[[ Store the charging state of each player. +keys: player name +value: +nil = not charging or player not existing +number: currently charging, the number is the time from minetest.get_us_time + in which the charging has started +]] +local bow_load = {} + +-- Another player table, this one stores the wield index of the bow being charged +local bow_index = {} + +function mcl_bows_s.shoot_arrow_crossbow(arrow_item, pos, dir, yaw, shooter, power, damage, is_critical, crossbow_stack, collectable) + local obj = minetest.add_entity({x=pos.x,y=pos.y,z=pos.z}, arrow_item.."_entity") + if power == nil then + power = BOW_MAX_SPEED --19 + end + if damage == nil then + damage = 3 + end + local knockback + if crossbow_stack then + local enchantments = mcl_enchanting.get_enchantments(crossbow_stack) + if enchantments.piercing then + obj:get_luaentity()._piercing = 1 * enchantments.piercing + else + obj:get_luaentity()._piercing = 0 + end + end + obj:set_velocity({x=dir.x*power, y=dir.y*power, z=dir.z*power}) + obj:set_acceleration({x=0, y=-GRAVITY, z=0}) + obj:set_yaw(yaw-math.pi/2) + local le = obj:get_luaentity() + le._shooter = shooter + le._source_object = shooter + le._damage = damage + le._is_critical = is_critical + le._startpos = pos + le._knockback = knockback + le._collectable = collectable + minetest.sound_play("mcl_bows_crossbow_shoot", {pos=pos, max_hear_distance=16}, true) + if shooter and shooter:is_player() then + if obj:get_luaentity().player == "" then + obj:get_luaentity().player = shooter + end + obj:get_luaentity().node = shooter:get_inventory():get_stack("main", 1):get_name() + end + return obj +end + +local function get_arrow(player) + local inv = player:get_inventory() + local arrow_stack, arrow_stack_id + for i=1, inv:get_size("main") do + local it = inv:get_stack("main", i) + if not it:is_empty() and minetest.get_item_group(it:get_name(), "ammo_crossbow") ~= 0 then + arrow_stack = it + arrow_stack_id = i + break + end + end + return arrow_stack, arrow_stack_id +end + +local function player_shoot_arrow(itemstack, player, power, damage, is_critical) + local has_multishot_enchantment = mcl_enchanting.has_enchantment(player:get_wielded_item(), "multishot") + local arrow_itemstring = wielditem:get_meta():get("arrow") + + if not arrow_itemstring then + return false + end + + local playerpos = player:get_pos() + local dir = player:get_look_dir() + local yaw = player:get_look_horizontal() + + if has_multishot_enchantment then + mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, {x=dir.x, y=dir.y, z=dir.z + .2}, yaw, player, power, damage, is_critical, player:get_wielded_item(), false) + mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, {x=dir.x, y=dir.y, z=dir.z - .2}, yaw, player, power, damage, is_critical, player:get_wielded_item(), false) + mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, dir, yaw, player, power, damage, is_critical, player:get_wielded_item(), true) + else + mcl_bows_s.shoot_arrow_crossbow(arrow_itemstring, {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, dir, yaw, player, power, damage, is_critical, player:get_wielded_item(), true) + end + return true +end + +-- Bow item, uncharged state +minetest.register_tool("mcl_bows:crossbow", { + description = S("Corssbow"), + _tt_help = S("Launches arrows"), + _doc_items_longdesc = S("Bows are ranged weapons to shoot arrows at your foes.").."\n".. +S("The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead."), + _doc_items_usagehelp = S("To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot."), + _doc_items_durability = BOW_DURABILITY, + inventory_image = "mcl_bows_crossbow.png", + wield_scale = mcl_vars.tool_wield_scale, + stack_max = 1, + range = 4, + -- Trick to disable digging as well + on_use = function() return end, + on_place = function(itemstack, player, pointed_thing) + if pointed_thing and pointed_thing.type == "node" then + -- Call on_rightclick if the pointed node defines it + local node = minetest.get_node(pointed_thing.under) + if player and not player:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, player, itemstack) or itemstack + end + end + end + + itemstack:get_meta():set_string("active", "true") + return itemstack + end, + on_secondary_use = function(itemstack) + itemstack:get_meta():set_string("active", "true") + return itemstack + end, + groups = {weapon=1,weapon_ranged=1,crossbow=1,enchantability=1}, + _mcl_uses = 326, +}) + +minetest.register_tool("mcl_bows:crossbow_loaded", { + description = S("Corssbow"), + _tt_help = S("Launches arrows"), + _doc_items_longdesc = S("Corssbow are ranged weapons to shoot arrows at your foes.").."\n".. +S("The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead."), + _doc_items_usagehelp = S("To use the corssbow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to load an arrow into the chamber, then to shoot press left mouse."), + _doc_items_durability = BOW_DURABILITY, + inventory_image = "mcl_bows_crossbow_3.png", + wield_scale = mcl_vars.tool_wield_scale, + stack_max = 1, + range = 4, + -- Trick to disable digging as well + on_use = function() return end, + on_place = function(itemstack, player, pointed_thing) + if pointed_thing and pointed_thing.type == "node" then + -- Call on_rightclick if the pointed node defines it + local node = minetest.get_node(pointed_thing.under) + if player and not player:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, player, itemstack) or itemstack + end + end + end + + itemstack:get_meta():set_string("active", "true") + return itemstack + end, + on_secondary_use = function(itemstack) + itemstack:get_meta():set_string("active", "true") + return itemstack + end, + groups = {weapon=1,weapon_ranged=1,crossbow=1,enchantability=1}, + _mcl_uses = 326, +}) + +-- Iterates through player inventory and resets all the bows in "charging" state back to their original stage +local function reset_bows(player) + local inv = player:get_inventory() + local list = inv:get_list("main") + for place, stack in pairs(list) do + if stack:get_name() == "mcl_bows:crossbow" or stack:get_name() == "mcl_bows:crossbow_enchanted" then + stack:get_meta():set_string("active", "") + elseif stack:get_name()=="mcl_bows:crossbow_0" or stack:get_name()=="mcl_bows:crossbow_1" or stack:get_name()=="mcl_bows:crossbow_2" then + stack:set_name("mcl_bows:crossbow") + stack:get_meta():set_string("active", "") + list[place] = stack + elseif stack:get_name()=="mcl_bows:crossbow_0_enchanted" or stack:get_name()=="mcl_bows:crossbow_1_enchanted" or stack:get_name()=="mcl_bows:crossbow_2_enchanted" then + stack:set_name("mcl_bows:crossbow_enchanted") + stack:get_meta():set_string("active", "") + list[place] = stack + end + end + inv:set_list("main", list) +end + +-- Resets the bow charging state and player speed. To be used when the player is no longer charging the bow +local function reset_bow_state(player, also_reset_bows) + bow_load[player:get_player_name()] = nil + bow_index[player:get_player_name()] = nil + if minetest.get_modpath("playerphysics") then + playerphysics.remove_physics_factor(player, "speed", "mcl_bows:use_crossbow") + end + if also_reset_bows then + reset_bows(player) + end +end + +-- Bow in charging state +for level=0, 2 do + minetest.register_tool("mcl_bows:crossbow_"..level, { + description = S("Crossbow"), + _doc_items_create_entry = false, + inventory_image = "mcl_bows_crossbow_"..level..".png", + wield_scale = mcl_vars.tool_wield_scale, + stack_max = 1, + range = 0, -- Pointing range to 0 to prevent punching with bow :D + groups = {not_in_creative_inventory=1, not_in_craft_guide=1, bow=1, enchantability=1}, + -- Trick to disable digging as well + on_use = function() return end, + on_drop = function(itemstack, dropper, pos) + reset_bow_state(dropper) + itemstack:get_meta():set_string("active", "") + if mcl_enchanting.is_enchanted(itemstack:get_name()) then + itemstack:set_name("mcl_bows:crossbow_enchanted") + else + itemstack:set_name("mcl_bows:crossbow") + end + minetest.item_drop(itemstack, dropper, pos) + itemstack:take_item() + return itemstack + end, + -- Prevent accidental interaction with itemframes and other nodes + on_place = function(itemstack) + return itemstack + end, + _mcl_uses = 385, + }) +end + + +controls.register_on_release(function(player, key, time) + if key~="RMB" then return end + --local inv = minetest.get_inventory({type="player", name=player:get_player_name()}) + local wielditem = player:get_wielded_item() + if wielditem:get_name()=="mcl_bows:crossbow_2" and get_arrow(player) or wielditem:get_name()=="mcl_bows:crossbow_2" and minetest.is_creative_enabled(player:get_player_name()) or wielditem:get_name()=="mcl_bows:crossbow_2_enchanted" and get_arrow(player) or wielditem:get_name()=="mcl_bows:crossbow_2_enchanted" and minetest.is_creative_enabled(player:get_player_name()) then + local arrow_stack, arrow_stack_id = get_arrow(player) + local arrow_itemstring + + if minetest.is_creative_enabled(player:get_player_name()) then + if arrow_stack then + arrow_itemstring = arrow_stack:get_name() + else + arrow_itemstring = "mcl_bows:arrow" + end + else + arrow_itemstring = arrow_stack:get_name() + arrow_stack:take_item() + player:get_inventory():set_stack("main", arrow_stack_id, arrow_stack) + end + + wielditem:get_meta():set_string("arrow", arrow_itemstring) + + if wielditem:get_name()=="mcl_bows:crossbow_2" then + wielditem:set_name("mcl_bows:crossbow_loaded") + else + wielditem:set_name("mcl_bows:crossbow_loaded_enchanted") + end + player:set_wielded_item(wielditem) + minetest.sound_play("mcl_bows_crossbow_load", {pos=player:get_pos(), max_hear_distance=16}, true) + else + reset_bow_state(player, true) + end +end) + +controls.register_on_press(function(player, key, time) + if key~="LMB" then return end + wielditem = player:get_wielded_item() + if wielditem:get_name()=="mcl_bows:crossbow_loaded" or wielditem:get_name()=="mcl_bows:crossbow_loaded_enchanted" then + local enchanted = mcl_enchanting.is_enchanted(wielditem:get_name()) + local speed, damage + local p_load = bow_load[player:get_player_name()] + local charge + -- Type sanity check + if type(p_load) == "number" then + charge = minetest.get_us_time() - p_load + else + -- In case something goes wrong ... + -- Just assume minimum charge. + charge = 0 + minetest.log("warning", "[mcl_bows] Player "..player:get_player_name().." fires arrow with non-numeric bow_load!") + end + charge = math.max(math.min(charge, BOW_CHARGE_TIME_FULL), 0) + + local charge_ratio = charge / BOW_CHARGE_TIME_FULL + charge_ratio = math.max(math.min(charge_ratio, 1), 0) + + -- Calculate damage and speed + -- Fully charged + local is_critical = false + speed = BOW_MAX_SPEED + local r = math.random(1,5) + if r == 1 then + -- 20% chance for critical hit + damage = 10 + is_critical = true + else + damage = 9 + end + + local has_shot = player_shoot_arrow(wielditem, player, speed, damage, is_critical) + + if enchanted then + wielditem:set_name("mcl_bows:crossbow_enchanted") + else + wielditem:set_name("mcl_bows:crossbow") + end + + if has_shot and not minetest.is_creative_enabled(player:get_player_name()) then + local durability = BOW_DURABILITY + local unbreaking = mcl_enchanting.get_enchantment(wielditem, "unbreaking") + local multishot = mcl_enchanting.get_enchantment(wielditem, "multishot") + if unbreaking > 0 then + durability = durability * (unbreaking + 1) + end + if multishot then + durability = durability / 3 + end + wielditem:add_wear(65535/durability) + end + player:set_wielded_item(wielditem) + reset_bow_state(player, true) + end +end) + +controls.register_on_hold(function(player, key, time) + local name = player:get_player_name() + local creative = minetest.is_creative_enabled(name) + if key ~= "RMB" then + return + end + --local inv = minetest.get_inventory({type="player", name=name}) + local wielditem = player:get_wielded_item() + local enchantments = mcl_enchanting.get_enchantments(wielditem) + if enchantments.quick_charge then + BOW_CHARGE_TIME_HALF = _BOW_CHARGE_TIME_HALF - (enchantments.quick_charge * 0.13 * 1000000 * .5) + BOW_CHARGE_TIME_FULL = _BOW_CHARGE_TIME_FULL - (enchantments.quick_charge * 0.13 * 1000000) + else + BOW_CHARGE_TIME_HALF = _BOW_CHARGE_TIME_HALF + BOW_CHARGE_TIME_FULL = _BOW_CHARGE_TIME_FULL + end + + if bow_load[name] == nil and (wielditem:get_name()=="mcl_bows:crossbow" or wielditem:get_name()=="mcl_bows:crossbow_enchanted") and wielditem:get_meta():get("active") and (creative or get_arrow(player)) then + local enchanted = mcl_enchanting.is_enchanted(wielditem:get_name()) + if enchanted then + wielditem:set_name("mcl_bows:crossbow_0_enchanted") + play_load_sound(0, player:get_pos()) + else + wielditem:set_name("mcl_bows:crossbow_0") + play_load_sound(0, player:get_pos()) + end + player:set_wielded_item(wielditem) + if minetest.get_modpath("playerphysics") then + -- Slow player down when using bow + playerphysics.add_physics_factor(player, "speed", "mcl_bows:use_crossbow", PLAYER_USE_CROSSBOW_SPEED) + end + bow_load[name] = minetest.get_us_time() + bow_index[name] = player:get_wield_index() + else + if player:get_wield_index() == bow_index[name] then + if type(bow_load[name]) == "number" then + if wielditem:get_name() == "mcl_bows:crossbow_0" and minetest.get_us_time() - bow_load[name] >= BOW_CHARGE_TIME_HALF then + wielditem:set_name("mcl_bows:crossbow_1") + play_load_sound(1, player:get_pos()) + elseif wielditem:get_name() == "mcl_bows:crossbow_0_enchanted" and minetest.get_us_time() - bow_load[name] >= BOW_CHARGE_TIME_HALF then + wielditem:set_name("mcl_bows:crossbow_1_enchanted") + play_load_sound(1, player:get_pos()) + elseif wielditem:get_name() == "mcl_bows:crossbow_1" and minetest.get_us_time() - bow_load[name] >= BOW_CHARGE_TIME_FULL then + wielditem:set_name("mcl_bows:crossbow_2") + play_load_sound(2, player:get_pos()) + elseif wielditem:get_name() == "mcl_bows:crossbow_1_enchanted" and minetest.get_us_time() - bow_load[name] >= BOW_CHARGE_TIME_FULL then + wielditem:set_name("mcl_bows:crossbow_2_enchanted") + play_load_sound(2, player:get_pos()) + end + else + if wielditem:get_name() == "mcl_bows:crossbow_0" or wielditem:get_name() == "mcl_bows:crossbow_1" or wielditem:get_name() == "mcl_bows:crossbow_2" then + wielditem:set_name("mcl_bows:crossbow") + play_load_sound(1, player:get_pos()) + elseif wielditem:get_name() == "mcl_bows:crossbow_0_enchanted" or wielditem:get_name() == "mcl_bows:crossbow_1_enchanted" or wielditem:get_name() == "mcl_bows:crossbow_2_enchanted" then + wielditem:set_name("mcl_bows:crossbow_enchanted") + play_load_sound(1, player:get_pos()) + end + end + player:set_wielded_item(wielditem) + else + reset_bow_state(player, true) + end + end +end) + +minetest.register_globalstep(function(dtime) + for _, player in pairs(minetest.get_connected_players()) do + local name = player:get_player_name() + local wielditem = player:get_wielded_item() + local wieldindex = player:get_wield_index() + --local controls = player:get_player_control() + if type(bow_load[name]) == "number" and ((wielditem:get_name()~="mcl_bows:crossbow_0" and wielditem:get_name()~="mcl_bows:crossbow_1" and wielditem:get_name()~="mcl_bows:crossbow_2" and wielditem:get_name()~="mcl_bows:crossbow_0_enchanted" and wielditem:get_name()~="mcl_bows:crossbow_1_enchanted" and wielditem:get_name()~="mcl_bows:crossbow_2_enchanted") or wieldindex ~= bow_index[name]) then + reset_bow_state(player, true) + end + end +end) + +minetest.register_on_joinplayer(function(player) + reset_bows(player) +end) + +minetest.register_on_leaveplayer(function(player) + reset_bow_state(player, true) +end) + +if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_mobitems") then + minetest.register_craft({ + output = "mcl_bows:crossbow", + recipe = { + {"mcl_core:stick", "mcl_core:iron_ingot", "mcl_core:stick"}, + {"mcl_mobitems:string", "mcl_bows:arrow", "mcl_mobitems:string"}, + {"", "mcl_core:stick", ""}, + } + }) +end + +minetest.register_craft({ + type = "fuel", + recipe = "group:bow", + burntime = 15, +}) + +-- Add entry aliases for the Help +if minetest.get_modpath("doc") then + doc.add_entry_alias("tools", "mcl_bows:crossbow", "tools", "mcl_bows:crossbow_0") + doc.add_entry_alias("tools", "mcl_bows:crossbow", "tools", "mcl_bows:crossbow_1") + doc.add_entry_alias("tools", "mcl_bows:crossbow", "tools", "mcl_bows:crossbow_2") +end diff --git a/mods/ITEMS/mcl_bows/init.lua b/mods/ITEMS/mcl_bows/init.lua index a2745d950..d5b06dac7 100644 --- a/mods/ITEMS/mcl_bows/init.lua +++ b/mods/ITEMS/mcl_bows/init.lua @@ -1,5 +1,11 @@ +--Bow dofile(minetest.get_modpath("mcl_bows") .. "/arrow.lua") dofile(minetest.get_modpath("mcl_bows") .. "/bow.lua") +dofile(minetest.get_modpath("mcl_bows") .. "/rocket.lua") +--Crossbow +dofile(minetest.get_modpath("mcl_bows") .. "/crossbow.lua") + +--Compatiblility with older MineClone worlds minetest.register_alias("mcl_throwing:bow", "mcl_bows:bow") minetest.register_alias("mcl_throwing:arrow", "mcl_bows:arrow") diff --git a/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.b3d b/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.b3d new file mode 100644 index 0000000000000000000000000000000000000000..0a34f1eaa63c07c7f37e90df2300497fc6c5385f GIT binary patch literal 11758 zcmZ9S33Qg#5r(4(O2nXuilXI5MG+NqlHw$`MZcB3S1?V{aCwOg9D6#7oSxp(H9|D5MA^Dy_lbMDVU4<}`1qb7cF zWKq!$MMXttoH=pQX4I86mtK20di!YzMMW7GH`bueK6`z+asBC&s!o0mr?%sB&XlQD zeGbZgj}v$7E*ofI`GOB|p0eNR&WSE%alXvST|Au}&ZZrxv8CSU1$AjII-3{I+Iy*U z0atlsPTD0 zU7Cx|=Ebx2UaD)F>GPtqb3x{8UUX#NZ)3|0pBL2We&TE%snhoxQ##$}k+|G`>i7=+ zGz2}H?xn`sX+AHgOLNiX_LDh#FLkz6`Ml`tT#z}N7aiI6D=$>~yr53^6KC^CUG@Uq zfBu>(d>*aMTy8&g`hMba`}Js@?DK*;-A`O@KXtlaUFig$N8)n(snh-RY`T{=){gUe zL0y`QF1Me|*?VbB`&geBot+CZXY-;X`~5Z+M*F;=PWKaM^GKb(UuV;BpGV?y`>E6S z)3fPbDsLU;^MblG7hP^YnX~uO+R`CDFFHFHWX|SANA~@C)D8A|L7na=&gPLieZRW) zfj*DK<@Qsj@26+ey|l3~z~=>ZX)e0lelln8r7;Wp`Ml`tT#z}N7aiI6Yiup?c|o1- zC(h=PI(@&+(%wFg#O3x=r|+j{)4fz)*VE?(b!jfT+e`+dtsH2eXa4&qrtH zg3Q^x=x{dOOTEgvd|ptO=AyHC@vOaapsaMCRJ};iZXi84^6KC^Coq50JB|eX8GMC#=9pAwp{P{~~)4kNIe38!! z>e5_vx&36$-bTWwM_MS(dGBc z=4@Wjv*}*y(>}@P1$AjII-3{I+IwkJ?FgS2ot+CZXY-ihW*mb}q=A&5MrgegmpI-{OAbU$%6kJM!^ zz~94$l24lX*UWUEj}B+!ry<*}Uk; ze!pFX;uGBW5!C5^;%pwN)At*?u;BAZTy8&gdU2MGHjmV0e}a%pOFLHhyy$ZK z$(+p#dN$olTdP<4yr3@4MQ8KkS$i+_U%uMsMQ7)N%-Ou?DEEGS*Z90JFFD;$oXsP3 z=Kabx_&i#gx!iv0_zwOw1aZ0jwyyig=LL1TpSaw9>arX7`|aQHsn3fpx1Y?}yr5^( zy)>_Sv(F3a(p+>lFP^pc($Zz0`@HDvT#z}N7aiH}cWX(9&kO2wKXEpX)S34y>+*Tj zKXbYL)bSnsX$azS`^{Uo-RA{$x}Uh*e(JIt`1`G>>p6~p%}n?C=wy#<7n!qpLC>ap zXHD=52KYP@ zm)lPr-;uqko=x{sefvP47u2P>=yLnXoV}Nd>jwM0=hG%b-JH8 zn@8&O{VH0A`8*Pr+fSXopPo(k(zd4IJ};HD?Rj`MjWF1MdLeLp>$?xp(D2|h2VOLNiX_LDh#FBP{=_Ic6S zxgc{kFFLaCx4x;u=LL1TpE#RG>h%383Y9*O#O3x=r|+j{)4jB2=-A|m&BX#DhEIZ5uhq=LL0XF1p-)GH36l#Vz$dFFHFHWX|SANA~>&l`rslL7na=&gPN2?ER)r zIi>23;_T;R_~&8x=VJKN17trRQ&iLobx*Jp*couoHI5ba2D^Y=rRTZ?><0RPzS48u z59|SU2YX7-_1<7F&>!q0J=gnzeZc@QP3D!xjqA&4o(AS zO3(Eaa2BWpRnl{P4mcZ31?Ni7_4!~LI1gMPJ=Yh3>EJ?evGiQe0GEPGz-54Yu4e-N ziLGjIh4frs4Xy%Lf?3jYeJ!{K)PUL2bA1E29$W`*l%DH4Pz!DXH%rg;TrdaR0&bO_ z>v}LB%mcSc&-LwK0cZe?fP1c+z@6X@uuyug7lXUNB5=3#T;B)o1^0j@(sTVFcmUiF z9+IBxN5I2iDOe^w*DJuIU^#e9daj=YPk_h4Q_^$25T)ze01aE-1rRRDrSOeYx?@G^gGgt@S1Mf@E^?L9j_yCaf zTz><69c%y_0ry;g8+;3V6MQ5+*Dc^<@Ey=9J=fm{-vi$TKaig5Pr)bPhu}xjbNy5B z6Yyj3GwHeB41Nwafi~&6{w4SYXa~QNp6lO$UxUxUZvppQe*r!RzXQLQp6fq>KY~Ai zKTFT`UqA=g0=|@<>%W1&g0H~erRTa6{1f~G{7ZVS{{#LFy1;*>=Xx9XAJ_`EOV9O= zJK*ns!2c2G0l4S77w8Fg0y|63bus7-b^*Ie&vgmd4fFwhrRTaI*aPei_LQFMy}@3f zKiEfluJ;4`f&pNl^jv=p902wQgQVyBKrk2-z(LY;eFzu=4hDxx&-E~H7#Io;m!9k4 z;7D);7$H5^M}bl>5{#0b>oMSHFdB@Np6lblvEUeRy!2d;2jjpAAV|-38JGZ01m)6m zJsC^_6TwN+b6o*W0Vjh~rRVw#a5^{*oGCrmQ@~lE5>!dg^*P{dFcq9DJ=f=hY2Z9? zf%IHo1g3)v!Nt;ZJp)_{E&-QG&-F}jIj9C#NYC}v;3{w>m?b^e*Me(64VW!G*EfLc z!FAw9>A9{0wcsXjv-Dig1#`eH;8y9mt_SnMJaC)zT;C2BfCkVgJ=aa(PH+cUC_UGU z!ChbxxLbOz?*sROd%zOuxqc8l0PY75Nze5o;9;;7ER&w=72r{@96TmH*H3~cz~kU4 z>A7ABo&isTXQk)*1@Jt04!kHm*ROz=!AoG3^jyCNR)bf;>(X=m7I+i90p6CL>$PAF ccn7>IJ=e`(9e5ACFFn`m!H3`jK+<#le~`mnt^fc4 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.mtl b/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.mtl new file mode 100644 index 000000000..f231bdf4c --- /dev/null +++ b/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.mtl @@ -0,0 +1,10 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl None +Ns 500 +Ka 0.8 0.8 0.8 +Kd 0.8 0.8 0.8 +Ks 0.8 0.8 0.8 +d 1 +illum 2 diff --git a/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.obj b/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.obj new file mode 100644 index 000000000..e2bd11d34 --- /dev/null +++ b/mods/ITEMS/mcl_bows/models/mcl_bows_rocket.obj @@ -0,0 +1,1016 @@ +# Blender v3.0.0 Alpha OBJ File: '' +# www.blender.org +mtllib mcl_bows_rocket.mtl +o Plane +v -1.414214 -0.063116 0.000000 +v 0.000000 -0.063116 1.414214 +v -0.000000 -0.063116 -1.414214 +v 1.414214 -0.063116 -0.000000 +v -1.414214 -0.062205 0.000000 +v 0.000000 -0.062205 1.414214 +v -0.000000 -0.062205 -1.414214 +v 1.414214 -0.062205 -0.000000 +v -1.414214 -0.060838 0.000000 +v 0.000000 -0.060838 1.414214 +v -0.000000 -0.060838 -1.414214 +v 1.414214 -0.060838 -0.000000 +v -1.414214 -0.059926 0.000000 +v 0.000000 -0.059926 1.414214 +v -0.000000 -0.059926 -1.414214 +v 1.414214 -0.059926 -0.000000 +v -1.414214 -0.058559 0.000000 +v 0.000000 -0.058559 1.414214 +v -0.000000 -0.058559 -1.414214 +v 1.414214 -0.058559 -0.000000 +v -1.414214 -0.057648 0.000000 +v 0.000000 -0.057648 1.414214 +v -0.000000 -0.057648 -1.414214 +v 1.414214 -0.057648 -0.000000 +v -1.414214 -0.056281 0.000000 +v 0.000000 -0.056281 1.414214 +v -0.000000 -0.056281 -1.414214 +v 1.414214 -0.056281 -0.000000 +v -1.414214 -0.055369 0.000000 +v 0.000000 -0.055369 1.414214 +v -0.000000 -0.055369 -1.414214 +v 1.414214 -0.055369 -0.000000 +v -1.414214 -0.054002 0.000000 +v 0.000000 -0.054002 1.414214 +v -0.000000 -0.054002 -1.414214 +v 1.414214 -0.054002 -0.000000 +v -1.414214 -0.053091 0.000000 +v 0.000000 -0.053091 1.414214 +v -0.000000 -0.053091 -1.414214 +v 1.414214 -0.053091 -0.000000 +v -1.414214 -0.051723 0.000000 +v 0.000000 -0.051723 1.414214 +v -0.000000 -0.051723 -1.414214 +v 1.414214 -0.051723 -0.000000 +v -1.414214 -0.050812 0.000000 +v 0.000000 -0.050812 1.414214 +v -0.000000 -0.050812 -1.414214 +v 1.414214 -0.050812 -0.000000 +v -1.414214 -0.049445 0.000000 +v 0.000000 -0.049445 1.414214 +v -0.000000 -0.049445 -1.414214 +v 1.414214 -0.049445 -0.000000 +v -1.414214 -0.048533 0.000000 +v 0.000000 -0.048533 1.414214 +v -0.000000 -0.048533 -1.414214 +v 1.414214 -0.048533 -0.000000 +v -1.414214 -0.047166 0.000000 +v 0.000000 -0.047166 1.414214 +v -0.000000 -0.047166 -1.414214 +v 1.414214 -0.047166 -0.000000 +v -1.414214 -0.046255 0.000000 +v 0.000000 -0.046255 1.414214 +v -0.000000 -0.046255 -1.414214 +v 1.414214 -0.046255 -0.000000 +v -1.414214 -0.044888 0.000000 +v 0.000000 -0.044888 1.414214 +v -0.000000 -0.044888 -1.414214 +v 1.414214 -0.044888 -0.000000 +v -1.414214 -0.043976 0.000000 +v 0.000000 -0.043976 1.414214 +v -0.000000 -0.043976 -1.414214 +v 1.414214 -0.043976 -0.000000 +v -1.414214 -0.042609 0.000000 +v 0.000000 -0.042609 1.414214 +v -0.000000 -0.042609 -1.414214 +v 1.414214 -0.042609 -0.000000 +v -1.414214 -0.041698 0.000000 +v 0.000000 -0.041698 1.414214 +v -0.000000 -0.041698 -1.414214 +v 1.414214 -0.041698 -0.000000 +v -1.414214 -0.040331 0.000000 +v 0.000000 -0.040331 1.414214 +v -0.000000 -0.040331 -1.414214 +v 1.414214 -0.040331 -0.000000 +v -1.414214 -0.039419 0.000000 +v 0.000000 -0.039419 1.414214 +v -0.000000 -0.039419 -1.414214 +v 1.414214 -0.039419 -0.000000 +v -1.414214 -0.038052 0.000000 +v 0.000000 -0.038052 1.414214 +v -0.000000 -0.038052 -1.414214 +v 1.414214 -0.038052 -0.000000 +v -1.414214 -0.037141 0.000000 +v 0.000000 -0.037141 1.414214 +v -0.000000 -0.037141 -1.414214 +v 1.414214 -0.037141 -0.000000 +v -1.414214 -0.035773 0.000000 +v 0.000000 -0.035773 1.414214 +v -0.000000 -0.035773 -1.414214 +v 1.414214 -0.035773 -0.000000 +v -1.414214 -0.034862 0.000000 +v 0.000000 -0.034862 1.414214 +v -0.000000 -0.034862 -1.414214 +v 1.414214 -0.034862 -0.000000 +v -1.414214 -0.033495 0.000000 +v 0.000000 -0.033495 1.414214 +v -0.000000 -0.033495 -1.414214 +v 1.414214 -0.033495 -0.000000 +v -1.414214 -0.032583 0.000000 +v 0.000000 -0.032583 1.414214 +v -0.000000 -0.032583 -1.414214 +v 1.414214 -0.032583 -0.000000 +v -1.414214 -0.031216 0.000000 +v 0.000000 -0.031216 1.414214 +v -0.000000 -0.031216 -1.414214 +v 1.414214 -0.031216 -0.000000 +v -1.414214 -0.030305 0.000000 +v 0.000000 -0.030305 1.414214 +v -0.000000 -0.030305 -1.414214 +v 1.414214 -0.030305 -0.000000 +v -1.414214 -0.028938 0.000000 +v 0.000000 -0.028938 1.414214 +v -0.000000 -0.028938 -1.414214 +v 1.414214 -0.028938 -0.000000 +v -1.414214 -0.028026 0.000000 +v 0.000000 -0.028026 1.414214 +v -0.000000 -0.028026 -1.414214 +v 1.414214 -0.028026 -0.000000 +v -1.414214 -0.026659 0.000000 +v 0.000000 -0.026659 1.414214 +v -0.000000 -0.026659 -1.414214 +v 1.414214 -0.026659 -0.000000 +v -1.414214 -0.025748 0.000000 +v 0.000000 -0.025748 1.414214 +v -0.000000 -0.025748 -1.414214 +v 1.414214 -0.025748 -0.000000 +v -1.414214 -0.024381 0.000000 +v 0.000000 -0.024381 1.414214 +v -0.000000 -0.024381 -1.414214 +v 1.414214 -0.024381 -0.000000 +v -1.414214 -0.023469 0.000000 +v 0.000000 -0.023469 1.414214 +v -0.000000 -0.023469 -1.414214 +v 1.414214 -0.023469 -0.000000 +v -1.414214 -0.022102 0.000000 +v 0.000000 -0.022102 1.414214 +v -0.000000 -0.022102 -1.414214 +v 1.414214 -0.022102 -0.000000 +v -1.414214 -0.021191 0.000000 +v 0.000000 -0.021191 1.414214 +v -0.000000 -0.021191 -1.414214 +v 1.414214 -0.021191 -0.000000 +v -1.414214 -0.019824 0.000000 +v 0.000000 -0.019824 1.414214 +v -0.000000 -0.019824 -1.414214 +v 1.414214 -0.019824 -0.000000 +v -1.414214 -0.018912 0.000000 +v 0.000000 -0.018912 1.414214 +v -0.000000 -0.018912 -1.414214 +v 1.414214 -0.018912 -0.000000 +v -1.414214 -0.017545 0.000000 +v 0.000000 -0.017545 1.414214 +v -0.000000 -0.017545 -1.414214 +v 1.414214 -0.017545 -0.000000 +v -1.414214 -0.016634 0.000000 +v 0.000000 -0.016634 1.414214 +v -0.000000 -0.016634 -1.414214 +v 1.414214 -0.016634 -0.000000 +v -1.414214 -0.015266 0.000000 +v 0.000000 -0.015266 1.414214 +v -0.000000 -0.015266 -1.414214 +v 1.414214 -0.015266 -0.000000 +v -1.414214 -0.014355 0.000000 +v 0.000000 -0.014355 1.414214 +v -0.000000 -0.014355 -1.414214 +v 1.414214 -0.014355 -0.000000 +v -1.414214 -0.012988 0.000000 +v 0.000000 -0.012988 1.414214 +v -0.000000 -0.012988 -1.414214 +v 1.414214 -0.012988 -0.000000 +v -1.414214 -0.012076 0.000000 +v 0.000000 -0.012076 1.414214 +v -0.000000 -0.012076 -1.414214 +v 1.414214 -0.012076 -0.000000 +v -1.414214 -0.010709 0.000000 +v 0.000000 -0.010709 1.414214 +v -0.000000 -0.010709 -1.414214 +v 1.414214 -0.010709 -0.000000 +v -1.414214 -0.009798 0.000000 +v 0.000000 -0.009798 1.414214 +v -0.000000 -0.009798 -1.414214 +v 1.414214 -0.009798 -0.000000 +v -1.414214 -0.008431 0.000000 +v 0.000000 -0.008431 1.414214 +v -0.000000 -0.008431 -1.414214 +v 1.414214 -0.008431 -0.000000 +v -1.414214 -0.007519 0.000000 +v 0.000000 -0.007519 1.414214 +v -0.000000 -0.007519 -1.414214 +v 1.414214 -0.007519 -0.000000 +v -1.414214 -0.006152 0.000000 +v 0.000000 -0.006152 1.414214 +v -0.000000 -0.006152 -1.414214 +v 1.414214 -0.006152 -0.000000 +v -1.414214 -0.005241 0.000000 +v 0.000000 -0.005241 1.414214 +v -0.000000 -0.005241 -1.414214 +v 1.414214 -0.005241 -0.000000 +v -1.414214 -0.003874 0.000000 +v 0.000000 -0.003874 1.414214 +v -0.000000 -0.003874 -1.414214 +v 1.414214 -0.003874 -0.000000 +v -1.414214 -0.002962 0.000000 +v 0.000000 -0.002962 1.414214 +v -0.000000 -0.002962 -1.414214 +v 1.414214 -0.002962 -0.000000 +v -1.414214 -0.001595 0.000000 +v 0.000000 -0.001595 1.414214 +v -0.000000 -0.001595 -1.414214 +v 1.414214 -0.001595 -0.000000 +v -1.414214 -0.000684 0.000000 +v 0.000000 -0.000684 1.414214 +v -0.000000 -0.000684 -1.414214 +v 1.414214 -0.000684 -0.000000 +v -1.414214 0.000684 0.000000 +v 0.000000 0.000684 1.414214 +v -0.000000 0.000684 -1.414214 +v 1.414214 0.000684 -0.000000 +v -1.414214 0.001595 0.000000 +v 0.000000 0.001595 1.414214 +v -0.000000 0.001595 -1.414214 +v 1.414214 0.001595 -0.000000 +v -1.414214 0.002962 0.000000 +v 0.000000 0.002962 1.414214 +v -0.000000 0.002962 -1.414214 +v 1.414214 0.002962 -0.000000 +v -1.414214 0.003874 0.000000 +v 0.000000 0.003874 1.414214 +v -0.000000 0.003874 -1.414214 +v 1.414214 0.003874 -0.000000 +v -1.414214 0.005241 0.000000 +v 0.000000 0.005241 1.414214 +v -0.000000 0.005241 -1.414214 +v 1.414214 0.005241 -0.000000 +v -1.414214 0.006152 0.000000 +v 0.000000 0.006152 1.414214 +v -0.000000 0.006152 -1.414214 +v 1.414214 0.006152 -0.000000 +v -1.414214 0.007519 0.000000 +v 0.000000 0.007519 1.414214 +v -0.000000 0.007519 -1.414214 +v 1.414214 0.007519 -0.000000 +v -1.414214 0.008431 0.000000 +v 0.000000 0.008431 1.414214 +v -0.000000 0.008431 -1.414214 +v 1.414214 0.008431 -0.000000 +v -1.414214 0.009798 0.000000 +v 0.000000 0.009798 1.414214 +v -0.000000 0.009798 -1.414214 +v 1.414214 0.009798 -0.000000 +v -1.414214 0.010709 0.000000 +v 0.000000 0.010709 1.414214 +v -0.000000 0.010709 -1.414214 +v 1.414214 0.010709 -0.000000 +v -1.414214 0.012076 0.000000 +v 0.000000 0.012076 1.414214 +v -0.000000 0.012076 -1.414214 +v 1.414214 0.012076 -0.000000 +v -1.414214 0.012988 0.000000 +v 0.000000 0.012988 1.414214 +v -0.000000 0.012988 -1.414214 +v 1.414214 0.012988 -0.000000 +v -1.414214 0.014355 0.000000 +v 0.000000 0.014355 1.414214 +v -0.000000 0.014355 -1.414214 +v 1.414214 0.014355 -0.000000 +v -1.414214 0.015266 0.000000 +v 0.000000 0.015266 1.414214 +v -0.000000 0.015266 -1.414214 +v 1.414214 0.015266 -0.000000 +v -1.414214 0.016634 0.000000 +v 0.000000 0.016634 1.414214 +v -0.000000 0.016634 -1.414214 +v 1.414214 0.016634 -0.000000 +v -1.414214 0.017545 0.000000 +v 0.000000 0.017545 1.414214 +v -0.000000 0.017545 -1.414214 +v 1.414214 0.017545 -0.000000 +v -1.414214 0.018912 0.000000 +v 0.000000 0.018912 1.414214 +v -0.000000 0.018912 -1.414214 +v 1.414214 0.018912 -0.000000 +v -1.414214 0.019824 0.000000 +v 0.000000 0.019824 1.414214 +v -0.000000 0.019824 -1.414214 +v 1.414214 0.019824 -0.000000 +v -1.414214 0.021191 0.000000 +v 0.000000 0.021191 1.414214 +v -0.000000 0.021191 -1.414214 +v 1.414214 0.021191 -0.000000 +v -1.414214 0.022102 0.000000 +v 0.000000 0.022102 1.414214 +v -0.000000 0.022102 -1.414214 +v 1.414214 0.022102 -0.000000 +v -1.414214 0.023469 0.000000 +v 0.000000 0.023469 1.414214 +v -0.000000 0.023469 -1.414214 +v 1.414214 0.023469 -0.000000 +v -1.414214 0.024381 0.000000 +v 0.000000 0.024381 1.414214 +v -0.000000 0.024381 -1.414214 +v 1.414214 0.024381 -0.000000 +v -1.414214 0.025748 0.000000 +v 0.000000 0.025748 1.414214 +v -0.000000 0.025748 -1.414214 +v 1.414214 0.025748 -0.000000 +v -1.414214 0.026659 0.000000 +v 0.000000 0.026659 1.414214 +v -0.000000 0.026659 -1.414214 +v 1.414214 0.026659 -0.000000 +v -1.414214 0.028026 0.000000 +v 0.000000 0.028026 1.414214 +v -0.000000 0.028026 -1.414214 +v 1.414214 0.028026 -0.000000 +v -1.414214 0.028938 0.000000 +v 0.000000 0.028938 1.414214 +v -0.000000 0.028938 -1.414214 +v 1.414214 0.028938 -0.000000 +v -1.414214 0.030305 0.000000 +v 0.000000 0.030305 1.414214 +v -0.000000 0.030305 -1.414214 +v 1.414214 0.030305 -0.000000 +v -1.414214 0.031216 0.000000 +v 0.000000 0.031216 1.414214 +v -0.000000 0.031216 -1.414214 +v 1.414214 0.031216 -0.000000 +v -1.414214 0.032584 0.000000 +v 0.000000 0.032584 1.414214 +v -0.000000 0.032584 -1.414214 +v 1.414214 0.032584 -0.000000 +v -1.414214 0.033495 0.000000 +v 0.000000 0.033495 1.414214 +v -0.000000 0.033495 -1.414214 +v 1.414214 0.033495 -0.000000 +v -1.414214 0.034862 0.000000 +v 0.000000 0.034862 1.414214 +v -0.000000 0.034862 -1.414214 +v 1.414214 0.034862 -0.000000 +v -1.414214 0.035774 0.000000 +v 0.000000 0.035774 1.414214 +v -0.000000 0.035774 -1.414214 +v 1.414214 0.035774 -0.000000 +v -1.414214 0.037141 0.000000 +v 0.000000 0.037141 1.414214 +v -0.000000 0.037141 -1.414214 +v 1.414214 0.037141 -0.000000 +v -1.414214 0.038052 0.000000 +v 0.000000 0.038052 1.414214 +v -0.000000 0.038052 -1.414214 +v 1.414214 0.038052 -0.000000 +v -1.414214 0.039419 0.000000 +v 0.000000 0.039419 1.414214 +v -0.000000 0.039419 -1.414214 +v 1.414214 0.039419 -0.000000 +v -1.414214 0.040331 0.000000 +v 0.000000 0.040331 1.414214 +v -0.000000 0.040331 -1.414214 +v 1.414214 0.040331 -0.000000 +v -1.414214 0.041698 0.000000 +v 0.000000 0.041698 1.414214 +v -0.000000 0.041698 -1.414214 +v 1.414214 0.041698 -0.000000 +v -1.414214 0.042609 0.000000 +v 0.000000 0.042609 1.414214 +v -0.000000 0.042609 -1.414214 +v 1.414214 0.042609 -0.000000 +v -1.414214 0.043976 0.000000 +v 0.000000 0.043976 1.414214 +v -0.000000 0.043976 -1.414214 +v 1.414214 0.043976 -0.000000 +v -1.414214 0.044888 0.000000 +v 0.000000 0.044888 1.414214 +v -0.000000 0.044888 -1.414214 +v 1.414214 0.044888 -0.000000 +v -1.414214 0.046255 0.000000 +v 0.000000 0.046255 1.414214 +v -0.000000 0.046255 -1.414214 +v 1.414214 0.046255 -0.000000 +v -1.414214 0.047166 0.000000 +v 0.000000 0.047166 1.414214 +v -0.000000 0.047166 -1.414214 +v 1.414214 0.047166 -0.000000 +v -1.414214 0.048533 0.000000 +v 0.000000 0.048533 1.414214 +v -0.000000 0.048533 -1.414214 +v 1.414214 0.048533 -0.000000 +v -1.414214 0.049445 0.000000 +v 0.000000 0.049445 1.414214 +v -0.000000 0.049445 -1.414214 +v 1.414214 0.049445 -0.000000 +v -1.414214 0.050812 0.000000 +v 0.000000 0.050812 1.414214 +v -0.000000 0.050812 -1.414214 +v 1.414214 0.050812 -0.000000 +v -1.414214 0.051723 0.000000 +v 0.000000 0.051723 1.414214 +v -0.000000 0.051723 -1.414214 +v 1.414214 0.051723 -0.000000 +v -1.414214 0.053091 0.000000 +v 0.000000 0.053091 1.414214 +v -0.000000 0.053091 -1.414214 +v 1.414214 0.053091 -0.000000 +v -1.414214 0.054002 0.000000 +v 0.000000 0.054002 1.414214 +v -0.000000 0.054002 -1.414214 +v 1.414214 0.054002 -0.000000 +v -1.414214 0.055369 0.000000 +v 0.000000 0.055369 1.414214 +v -0.000000 0.055369 -1.414214 +v 1.414214 0.055369 -0.000000 +v -1.414214 0.056281 0.000000 +v 0.000000 0.056281 1.414214 +v -0.000000 0.056281 -1.414214 +v 1.414214 0.056281 -0.000000 +v -1.414214 0.057648 0.000000 +v 0.000000 0.057648 1.414214 +v -0.000000 0.057648 -1.414214 +v 1.414214 0.057648 -0.000000 +v -1.414214 0.058559 0.000000 +v 0.000000 0.058559 1.414214 +v -0.000000 0.058559 -1.414214 +v 1.414214 0.058559 -0.000000 +v -1.414214 0.059926 0.000000 +v 0.000000 0.059926 1.414214 +v -0.000000 0.059926 -1.414214 +v 1.414214 0.059926 -0.000000 +v -1.414214 0.060838 0.000000 +v 0.000000 0.060838 1.414214 +v -0.000000 0.060838 -1.414214 +v 1.414214 0.060838 -0.000000 +v -1.414214 0.062205 0.000000 +v 0.000000 0.062205 1.414214 +v -0.000000 0.062205 -1.414214 +v 1.414214 0.062205 -0.000000 +v -1.414214 0.063116 0.000000 +v 0.000000 0.063116 1.414214 +v -0.000000 0.063116 -1.414214 +v 1.414214 0.063116 -0.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +usemtl None +s off +f 1/1/1 3/2/1 4/3/1 2/4/1 +f 5/5/2 6/6/2 8/7/2 7/8/2 +f 9/9/1 11/10/1 12/11/1 10/12/1 +f 13/13/2 14/14/2 16/15/2 15/16/2 +f 17/17/1 19/18/1 20/19/1 18/20/1 +f 21/21/2 22/22/2 24/23/2 23/24/2 +f 25/25/1 27/26/1 28/27/1 26/28/1 +f 29/29/2 30/30/2 32/31/2 31/32/2 +f 33/33/1 35/34/1 36/35/1 34/36/1 +f 37/37/2 38/38/2 40/39/2 39/40/2 +f 41/41/1 43/42/1 44/43/1 42/44/1 +f 45/45/2 46/46/2 48/47/2 47/48/2 +f 49/49/1 51/50/1 52/51/1 50/52/1 +f 53/53/2 54/54/2 56/55/2 55/56/2 +f 57/57/1 59/58/1 60/59/1 58/60/1 +f 61/61/2 62/62/2 64/63/2 63/64/2 +f 65/65/1 67/66/1 68/67/1 66/68/1 +f 69/69/2 70/70/2 72/71/2 71/72/2 +f 73/73/1 75/74/1 76/75/1 74/76/1 +f 77/77/2 78/78/2 80/79/2 79/80/2 +f 81/81/1 83/82/1 84/83/1 82/84/1 +f 85/85/2 86/86/2 88/87/2 87/88/2 +f 89/89/1 91/90/1 92/91/1 90/92/1 +f 93/93/2 94/94/2 96/95/2 95/96/2 +f 97/97/1 99/98/1 100/99/1 98/100/1 +f 101/101/2 102/102/2 104/103/2 103/104/2 +f 105/105/1 107/106/1 108/107/1 106/108/1 +f 109/109/2 110/110/2 112/111/2 111/112/2 +f 113/113/1 115/114/1 116/115/1 114/116/1 +f 117/117/2 118/118/2 120/119/2 119/120/2 +f 121/121/1 123/122/1 124/123/1 122/124/1 +f 125/125/2 126/126/2 128/127/2 127/128/2 +f 129/129/1 131/130/1 132/131/1 130/132/1 +f 133/133/2 134/134/2 136/135/2 135/136/2 +f 137/137/1 139/138/1 140/139/1 138/140/1 +f 141/141/2 142/142/2 144/143/2 143/144/2 +f 145/145/1 147/146/1 148/147/1 146/148/1 +f 149/149/2 150/150/2 152/151/2 151/152/2 +f 153/153/1 155/154/1 156/155/1 154/156/1 +f 157/157/2 158/158/2 160/159/2 159/160/2 +f 161/161/1 163/162/1 164/163/1 162/164/1 +f 165/165/2 166/166/2 168/167/2 167/168/2 +f 169/169/1 171/170/1 172/171/1 170/172/1 +f 173/173/2 174/174/2 176/175/2 175/176/2 +f 177/177/1 179/178/1 180/179/1 178/180/1 +f 181/181/2 182/182/2 184/183/2 183/184/2 +f 185/185/1 187/186/1 188/187/1 186/188/1 +f 189/189/2 190/190/2 192/191/2 191/192/2 +f 193/193/1 195/194/1 196/195/1 194/196/1 +f 197/197/2 198/198/2 200/199/2 199/200/2 +f 201/201/1 203/202/1 204/203/1 202/204/1 +f 205/205/2 206/206/2 208/207/2 207/208/2 +f 209/209/1 211/210/1 212/211/1 210/212/1 +f 213/213/2 214/214/2 216/215/2 215/216/2 +f 217/217/1 219/218/1 220/219/1 218/220/1 +f 221/221/2 222/222/2 224/223/2 223/224/2 +f 225/225/1 227/226/1 228/227/1 226/228/1 +f 229/229/2 230/230/2 232/231/2 231/232/2 +f 233/233/1 235/234/1 236/235/1 234/236/1 +f 237/237/2 238/238/2 240/239/2 239/240/2 +f 241/241/1 243/242/1 244/243/1 242/244/1 +f 245/245/2 246/246/2 248/247/2 247/248/2 +f 249/249/1 251/250/1 252/251/1 250/252/1 +f 253/253/2 254/254/2 256/255/2 255/256/2 +f 257/257/1 259/258/1 260/259/1 258/260/1 +f 261/261/2 262/262/2 264/263/2 263/264/2 +f 265/265/1 267/266/1 268/267/1 266/268/1 +f 269/269/2 270/270/2 272/271/2 271/272/2 +f 273/273/1 275/274/1 276/275/1 274/276/1 +f 277/277/2 278/278/2 280/279/2 279/280/2 +f 281/281/1 283/282/1 284/283/1 282/284/1 +f 285/285/2 286/286/2 288/287/2 287/288/2 +f 289/289/1 291/290/1 292/291/1 290/292/1 +f 293/293/2 294/294/2 296/295/2 295/296/2 +f 297/297/1 299/298/1 300/299/1 298/300/1 +f 301/301/2 302/302/2 304/303/2 303/304/2 +f 305/305/1 307/306/1 308/307/1 306/308/1 +f 309/309/2 310/310/2 312/311/2 311/312/2 +f 313/313/1 315/314/1 316/315/1 314/316/1 +f 317/317/2 318/318/2 320/319/2 319/320/2 +f 321/321/1 323/322/1 324/323/1 322/324/1 +f 325/325/2 326/326/2 328/327/2 327/328/2 +f 329/329/1 331/330/1 332/331/1 330/332/1 +f 333/333/2 334/334/2 336/335/2 335/336/2 +f 337/337/1 339/338/1 340/339/1 338/340/1 +f 341/341/2 342/342/2 344/343/2 343/344/2 +f 345/345/1 347/346/1 348/347/1 346/348/1 +f 349/349/2 350/350/2 352/351/2 351/352/2 +f 353/353/1 355/354/1 356/355/1 354/356/1 +f 357/357/2 358/358/2 360/359/2 359/360/2 +f 361/361/1 363/362/1 364/363/1 362/364/1 +f 365/365/2 366/366/2 368/367/2 367/368/2 +f 369/369/1 371/370/1 372/371/1 370/372/1 +f 373/373/2 374/374/2 376/375/2 375/376/2 +f 377/377/1 379/378/1 380/379/1 378/380/1 +f 381/381/2 382/382/2 384/383/2 383/384/2 +f 385/385/1 387/386/1 388/387/1 386/388/1 +f 389/389/2 390/390/2 392/391/2 391/392/2 +f 393/393/1 395/394/1 396/395/1 394/396/1 +f 397/397/2 398/398/2 400/399/2 399/400/2 +f 401/401/1 403/402/1 404/403/1 402/404/1 +f 405/405/2 406/406/2 408/407/2 407/408/2 +f 409/409/1 411/410/1 412/411/1 410/412/1 +f 413/413/2 414/414/2 416/415/2 415/416/2 +f 417/417/1 419/418/1 420/419/1 418/420/1 +f 421/421/2 422/422/2 424/423/2 423/424/2 +f 425/425/1 427/426/1 428/427/1 426/428/1 +f 429/429/2 430/430/2 432/431/2 431/432/2 +f 433/433/1 435/434/1 436/435/1 434/436/1 +f 437/437/2 438/438/2 440/439/2 439/440/2 +f 441/441/1 443/442/1 444/443/1 442/444/1 +f 445/445/2 446/446/2 448/447/2 447/448/2 diff --git a/mods/ITEMS/mcl_bows/rocket.lua b/mods/ITEMS/mcl_bows/rocket.lua new file mode 100644 index 000000000..678aba4d4 --- /dev/null +++ b/mods/ITEMS/mcl_bows/rocket.lua @@ -0,0 +1,706 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +local math = math +local vector = vector + +-- Time in seconds after which a stuck arrow is deleted +local ARROW_TIMEOUT = 1 +-- Time after which stuck arrow is rechecked for being stuck +local STUCK_RECHECK_TIME = 0.1 + +--local GRAVITY = 9.81 + +local YAW_OFFSET = -math.pi/2 + +local function dir_to_pitch(dir) + --local dir2 = vector.normalize(dir) + local xz = math.abs(dir.x) + math.abs(dir.z) + return -math.atan2(-dir.y, xz) +end + +local function random_arrow_positions(positions, placement) + if positions == "x" then + return math.random(-4, 4) + elseif positions == "y" then + return math.random(0, 10) + end + if placement == "front" and positions == "z" then + return 3 + elseif placement == "back" and positions == "z" then + return -3 + end + return 0 +end + +local function damage_explosion(self, damagemulitplier) + mcl_explosions.explode(self.object:get_pos(), 3, {}) + local objects = minetest.get_objects_inside_radius(self.object:get_pos(), 8) + for _,obj in pairs(objects) do + if obj:is_player() then + mcl_util.deal_damage(obj, damagemulitplier - vector.distance(self.object:get_pos(), obj:get_pos()), {type = "explosion"}) + elseif obj:get_luaentity()._cmi_is_mob then + obj:punch(self.object, 1.0, { + full_punch_interval=1.0, + damage_groups={fleshy=damagemulitplier - vector.distance(self.object:get_pos(), obj:get_pos())}, + }, self.object:get_velocity()) + end + end +end + +local function particle_explosion(self) + local particle_pattern = math.random(1, 3) + local fpitch = 0 + local true_type = "" + local type = math.random(1,2) + local size = math.random(1,3) + local colors = {"red", "yellow", "blue", "green", "white"} + local this_colors = {colors[math.random(#colors)], colors[math.random(#colors)], colors[math.random(#colors)]} + + if size == 1 then + fpitch = math.random(200, 300) + elseif size == 2 then + fpitch = math.random(100, 130) + else + fpitch = math.random(60, 70) + end + + if type == 1 then + true_type = "Popper" + else + true_type = "Floof" + end + + if type == 1 then + minetest.sound_play("mcl_bows_firework", { + pos = self.object:get_pos(), + max_hear_distance = 100, + gain = 3.0, + pitch = fpitch/100 + }, true) + else + minetest.sound_play("mcl_bows_firework_soft", { + pos = self.object:get_pos(), + max_hear_distance = 100, + gain = 4.0, + pitch = fpitch/100 + }, true) + end + + if particle_pattern == 1 then + minetest.add_particlespawner({ + amount = 400 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-7 * size,-7 * size,-7 * size), + maxvel = vector.new(7 * size,7 * size,7 * size), + minexptime = .6 * size / 2, + maxexptime = .9 * size / 2, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[1]..".png", + glow = 14, + }) + minetest.add_particlespawner({ + amount = 400 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-2 * size,-2 * size,-2 * size), + maxvel = vector.new(2 * size,2 * size,2 * size), + minexptime = .6 * size / 2, + maxexptime = .9 * size / 2, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[2]..".png", + glow = 14, + }) + minetest.add_particlespawner({ + amount = 100 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-14 * size,-14 * size,-14 * size), + maxvel = vector.new(14 * size,14 * size,14 * size), + minexptime = .6 * size / 2, + maxexptime = .9 * size / 2, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[3]..".png", + glow = 14, + }) + elseif particle_pattern == 2 then + + minetest.add_particlespawner({ + amount = 240 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-5 * size,-5 * size,-5 * size), + maxvel = vector.new(5 * size,5 * size,5 * size), + minexptime = .6 * size / 2, + maxexptime = .9 * size / 2, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[1]..".png", + glow = 14, + }) + minetest.add_particlespawner({ + amount = 500 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-2 * size,-2 * size,-2 * size), + maxvel = vector.new(2 * size,2 * size,2 * size), + minexptime = .6 * size / 2, + maxexptime = .9 * size / 2, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[2]..".png", + glow = 14, + }) + minetest.add_particlespawner({ + amount = 350 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-3 * size,-3 * size,-3 * size), + maxvel = vector.new(3 * size,3 * size,3 * size), + minexptime = .6 * size / 2, + maxexptime = .9 * size / 2, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[3]..".png", + glow = 14, + }) + elseif particle_pattern == 3 then + + minetest.add_particlespawner({ + amount = 400 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-6 * size,-4 * size,-6 * size), + maxvel = vector.new(6 * size,4 * size,6 * size), + minexptime = .6 * size, + maxexptime = .9 * size, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[1]..".png", + glow = 14, + }) + minetest.add_particlespawner({ + amount = 120 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-8 * size,6 * size,-8 * size), + maxvel = vector.new(8 * size,6 * size,8 * size), + minexptime = .6 * size, + maxexptime = .9 * size, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[2]..".png", + glow = 14, + }) + minetest.add_particlespawner({ + amount = 130 * size, + time = 0.0001, + minpos = self.object:get_pos(), + maxpos = self.object:get_pos(), + minvel = vector.new(-3 * size,3 * size,-3 * size), + maxvel = vector.new(3 * size,3 * size,3 * size), + minexptime = .6 * size, + maxexptime = .9 * size, + minsize = 2 * size, + maxsize = 3 * size, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_firework_"..this_colors[3]..".png", + glow = 14, + }) + end + + return size + +end + +local mod_awards = minetest.get_modpath("awards") and minetest.get_modpath("mcl_achievements") +local mod_button = minetest.get_modpath("mesecons_button") + +minetest.register_craftitem("mcl_bows:rocket", { + description = S("Arrow"), + _tt_help = S("Ammunition").."\n"..S("Damage from bow: 1-10").."\n"..S("Damage from dispenser: 3"), + _doc_items_longdesc = S("Arrows are ammunition for bows and dispensers.").."\n".. +S("An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.").."\n".. +S("Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons."), + _doc_items_usagehelp = S("To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it."), + inventory_image = "mcl_bows_rocket.png", + groups = { ammo=1, ammo_crossbow=1, ammo_bow_regular=1 }, + _on_dispense = function(itemstack, dispenserpos, droppos, dropnode, dropdir) + -- Shoot arrow + local shootpos = vector.add(dispenserpos, vector.multiply(dropdir, 0.51)) + local yaw = math.atan2(dropdir.z, dropdir.x) + YAW_OFFSET + mcl_bows.shoot_arrow(itemstack:get_name(), shootpos, dropdir, yaw, nil, 19, 3) + end, +}) + + + +local ARROW_ENTITY={ + physical = true, + pointable = false, + visual = "mesh", + mesh = "mcl_bows_rocket.obj", + visual_size = {x=2.5, y=2.5}, + textures = {"mcl_bows_rocket.png"}, + collisionbox = {-0.19, -0.125, -0.19, 0.19, 0.125, 0.19}, + collide_with_objects = false, + _fire_damage_resistant = true, + + _lastpos={}, + _startpos=nil, + _damage=1, -- Damage on impact + _is_critical=false, -- Whether this arrow would deal critical damage + _stuck=false, -- Whether arrow is stuck + _fuse=nil,-- Amount of time (in seconds) the arrow has been stuck so far + _fuserechecktimer=nil,-- An additional timer for periodically re-checking the stuck status of an arrow + _stuckin=nil, --Position of node in which arow is stuck. + _shooter=nil, -- ObjectRef of player or mob who shot it + _is_arrow = true, + + _viscosity=0, -- Viscosity of node the arrow is currently in + _deflection_cooloff=0, -- Cooloff timer after an arrow deflection, to prevent many deflections in quick succession +} + +-- Destroy arrow entity self at pos and drops it as an item +local function spawn_item(self, pos) + if not minetest.is_creative_enabled("") then + local item = minetest.add_item(pos, "mcl_bows:rocket") + item:set_velocity({x=0, y=0, z=0}) + item:set_yaw(self.object:get_yaw()) + end + mcl_burning.extinguish(self.object) + self.object:remove() +end + +local function damage_particles(pos, is_critical) + if is_critical then + minetest.add_particlespawner({ + amount = 15, + time = 0.1, + minpos = {x=pos.x-0.5, y=pos.y-0.5, z=pos.z-0.5}, + maxpos = {x=pos.x+0.5, y=pos.y+0.5, z=pos.z+0.5}, + minvel = {x=-0.1, y=-0.1, z=-0.1}, + maxvel = {x=0.1, y=0.1, z=0.1}, + minacc = {x=0, y=0, z=0}, + maxacc = {x=0, y=0, z=0}, + minexptime = 1, + maxexptime = 2, + minsize = 1.5, + maxsize = 1.5, + collisiondetection = false, + vertical = false, + texture = "mcl_particles_crit.png^[colorize:#bc7a57:127", + }) + end +end + +function ARROW_ENTITY.on_step(self, dtime) + mcl_burning.tick(self.object, dtime, self) + + self._time_in_air = self._time_in_air + .001 + + + local pos = self.object:get_pos() + local dpos = table.copy(pos) -- digital pos + dpos = vector.round(dpos) + local node = minetest.get_node(dpos) + + if not self._fuse then + self._fuse = 0 + end + if not self._fuserechecktimer then + self._fuserechecktimer = 0 + end + + self._fuse = self._fuse + dtime + self._fuserechecktimer = self._fuserechecktimer + dtime + + if self._fuse > ARROW_TIMEOUT then + self._stuck = true + end + if self._stuck then + if self._fuse > ARROW_TIMEOUT then + local eploded_particle = particle_explosion(self) + damage_explosion(self, eploded_particle * 17) + mcl_burning.extinguish(self.object) + self.object:remove() + return + end + -- Drop arrow as item when it is no longer stuck + -- FIXME: Arrows are a bit slow to react and continue to float in mid air for a few seconds. + if self._fuserechecktimer > STUCK_RECHECK_TIME then + local stuckin_def + if self._stuckin then + stuckin_def = minetest.registered_nodes[minetest.get_node(self._stuckin).name] + end + -- TODO: In MC, arrow just falls down without turning into an item + if stuckin_def and stuckin_def.walkable == false then + spawn_item(self, pos) + return + end + self._fuserechecktimer = 0 + end + -- Pickup arrow if player is nearby (not in Creative Mode) + local objects = minetest.get_objects_inside_radius(pos, 1) + for _,obj in ipairs(objects) do + if obj:is_player() then + if self._collectable and not minetest.is_creative_enabled(obj:get_player_name()) then + if obj:get_inventory():room_for_item("main", "mcl_bows:rocket") then + obj:get_inventory():add_item("main", "mcl_bows:rocket") + minetest.sound_play("item_drop_pickup", { + pos = pos, + max_hear_distance = 16, + gain = 1.0, + }, true) + end + end + mcl_burning.extinguish(self.object) + self.object:remove() + return + end + end + + -- Check for object "collision". Done every tick (hopefully this is not too stressing) + else + + if self._in_player == false then + minetest.add_particlespawner({ + amount = 1, + time = .0001, + minpos = pos, + maxpos = pos, + minvel = vector.new(-0.1,-0.1,-0.1), + maxvel = vector.new(0.1,0.1,0.1), + minexptime = 0.5, + maxexptime = 0.5, + minsize = 2, + maxsize = 2, + collisiondetection = false, + vertical = false, + texture = "mcl_bows_rocket_particle.png", + glow = 1, + }) + end + -- We just check for any hurtable objects nearby. + -- The radius of 3 is fairly liberal, but anything lower than than will cause + -- arrow to hilariously go through mobs often. + -- TODO: Implement an ACTUAL collision detection (engine support needed). + local objs = minetest.get_objects_inside_radius(pos, 1.5) + local closest_object + local closest_distance + + if self._deflection_cooloff > 0 then + self._deflection_cooloff = self._deflection_cooloff - dtime + end + + -- Iterate through all objects and remember the closest attackable object + for k, obj in pairs(objs) do + local ok = false + -- Arrows can only damage players and mobs + if obj:is_player() then + ok = true + elseif obj:get_luaentity() then + if (obj:get_luaentity()._cmi_is_mob or obj:get_luaentity()._hittable_by_projectile) then + ok = true + end + end + + if ok then + local dist = vector.distance(pos, obj:get_pos()) + if not closest_object or not closest_distance then + closest_object = obj + closest_distance = dist + elseif dist < closest_distance then + closest_object = obj + closest_distance = dist + end + end + end + + -- If an attackable object was found, we will damage the closest one only + + if closest_object then + local obj = closest_object + local is_player = obj:is_player() + local lua = obj:get_luaentity() + if obj == self._shooter and self._time_in_air > 1.02 or obj ~= self._shooter and (is_player or (lua and (lua._cmi_is_mob or lua._hittable_by_projectile))) then + if obj:get_hp() > 0 then + -- Check if there is no solid node between arrow and object + local ray = minetest.raycast(self.object:get_pos(), obj:get_pos(), true) + for pointed_thing in ray do + if pointed_thing.type == "object" and pointed_thing.ref == closest_object then + -- Target reached! We can proceed now. + break + elseif pointed_thing.type == "node" then + local nn = minetest.get_node(minetest.get_pointed_thing_position(pointed_thing)).name + local def = minetest.registered_nodes[nn] + if (not def) or def.walkable then + -- There's a node in the way. Delete arrow without damage + mcl_burning.extinguish(self.object) + self.object:remove() + return + end + end + end + + -- Punch target object but avoid hurting enderman. + if not lua or lua.name ~= "mobs_mc:enderman" then + if self._in_player == false then + damage_particles(self.object:get_pos(), self._is_critical) + end + if mcl_burning.is_burning(self.object) then + mcl_burning.set_on_fire(obj, 5) + end + if self._in_player == false then + obj:punch(self.object, 1.0, { + full_punch_interval=1.0, + damage_groups={fleshy=self._damage}, + }, self.object:get_velocity()) + if obj:is_player() then + local eploded_particle = particle_explosion(self) + damage_explosion(self, eploded_particle * 17) + mcl_burning.extinguish(self.object) + self.object:remove() + end + end + end + + + if is_player then + if self._shooter and self._shooter:is_player() and self._in_player == false then + -- “Ding” sound for hitting another player + minetest.sound_play({name="mcl_bows_hit_player", gain=0.1}, {to_player=self._shooter:get_player_name()}, true) + end + end + + if lua then + local entity_name = lua.name + -- Achievement for hitting skeleton, wither skeleton or stray (TODO) with an arrow at least 50 meters away + -- NOTE: Range has been reduced because mobs unload much earlier than that ... >_> + -- TODO: This achievement should be given for the kill, not just a hit + if self._shooter and self._shooter:is_player() and vector.distance(pos, self._startpos) >= 20 then + if mod_awards and (entity_name == "mobs_mc:skeleton" or entity_name == "mobs_mc:stray" or entity_name == "mobs_mc:witherskeleton") then + awards.unlock(self._shooter:get_player_name(), "mcl:snipeSkeleton") + end + end + end + if self._in_player == false then + minetest.sound_play({name="mcl_bows_hit_other", gain=0.3}, {pos=self.object:get_pos(), max_hear_distance=16}, true) + end + end + if not obj:is_player() then + mcl_burning.extinguish(self.object) + if self._piercing == 0 then + local eploded_particle = particle_explosion(self) + damage_explosion(self, eploded_particle * 17) + self.object:remove() + end + end + return + end + end + end + + -- Check for node collision + if self._lastpos.x~=nil and not self._stuck then + local def = minetest.registered_nodes[node.name] + local vel = self.object:get_velocity() + -- Arrow has stopped in one axis, so it probably hit something. + -- This detection is a bit clunky, but sadly, MT does not offer a direct collision detection for us. :-( + if (math.abs(vel.x) < 0.0001) or (math.abs(vel.z) < 0.0001) or (math.abs(vel.y) < 0.00001) then + -- Check for the node to which the arrow is pointing + local dir + if math.abs(vel.y) < 0.00001 then + if self._lastpos.y < pos.y then + dir = {x=0, y=1, z=0} + else + dir = {x=0, y=-1, z=0} + end + else + dir = minetest.facedir_to_dir(minetest.dir_to_facedir(minetest.yaw_to_dir(self.object:get_yaw()-YAW_OFFSET))) + end + self._stuckin = vector.add(dpos, dir) + local snode = minetest.get_node(self._stuckin) + local sdef = minetest.registered_nodes[snode.name] + + -- If node is non-walkable, unknown or ignore, don't make arrow stuck. + -- This causes a deflection in the engine. + if not sdef or sdef.walkable == false or snode.name == "ignore" then + self._stuckin = nil + if self._deflection_cooloff <= 0 then + -- Lose 1/3 of velocity on deflection + local newvel = vector.multiply(vel, 0.6667) + + self.object:set_velocity(newvel) + -- Reset deflection cooloff timer to prevent many deflections happening in quick succession + self._deflection_cooloff = 1.0 + end + else + + -- Node was walkable, make arrow stuck + self._stuck = true + self._fuserechecktimer = 0 + + self.object:set_velocity({x=0, y=0, z=0}) + self.object:set_acceleration({x=0, y=0, z=0}) + + minetest.sound_play({name="mcl_bows_hit_other", gain=0.3}, {pos=self.object:get_pos(), max_hear_distance=16}, true) + + if mcl_burning.is_burning(self.object) and snode.name == "mcl_tnt:tnt" then + tnt.ignite(self._stuckin) + end + + -- Push the button! Push, push, push the button! + if mod_button and minetest.get_item_group(node.name, "button") > 0 and minetest.get_item_group(node.name, "button_push_by_arrow") == 1 then + local bdir = minetest.wallmounted_to_dir(node.param2) + -- Check the button orientation + if vector.equals(vector.add(dpos, bdir), self._stuckin) then + mesecon.push_button(dpos, node) + end + end + end + elseif (def and def.liquidtype ~= "none") then + -- Slow down arrow in liquids + local v = def.liquid_viscosity + if not v then + v = 0 + end + --local old_v = self._viscosity + self._viscosity = v + local vpenalty = math.max(0.1, 0.98 - 0.1 * v) + if math.abs(vel.x) > 0.001 then + vel.x = vel.x * vpenalty + end + if math.abs(vel.z) > 0.001 then + vel.z = vel.z * vpenalty + end + self.object:set_velocity(vel) + end + end + + -- Update yaw + if not self._stuck then + local vel = self.object:get_velocity() + local yaw = minetest.dir_to_yaw(vel)+YAW_OFFSET + local pitch = dir_to_pitch(vel) + self.object:set_rotation({ x = 0, y = yaw, z = pitch }) + end + + -- Update internal variable + self._lastpos={x=pos.x, y=pos.y, z=pos.z} +end + +-- Force recheck of stuck arrows when punched. +-- Otherwise, punching has no effect. +function ARROW_ENTITY.on_punch(self) + if self._stuck then + self._fuserechecktimer = STUCK_RECHECK_TIME + end +end + +function ARROW_ENTITY.get_staticdata(self) + local out = { + lastpos = self._lastpos, + startpos = self._startpos, + damage = self._damage, + is_critical = self._is_critical, + stuck = self._stuck, + stuckin = self._stuckin, + } + if self._stuck then + -- If _fuse is missing for some reason, assume the maximum + if not self._fuse then + self._fuse = ARROW_TIMEOUT + end + out.stuckstarttime = minetest.get_gametime() - self._fuse + end + if self._shooter and self._shooter:is_player() then + out.shootername = self._shooter:get_player_name() + end + return minetest.serialize(out) +end + +function ARROW_ENTITY.on_activate(self, staticdata, dtime_s) + self._time_in_air = 1.0 + self._in_player = false + local data = minetest.deserialize(staticdata) + if data then + self._stuck = data.stuck + if data.stuck then + if data.stuckstarttime then + -- First, check if the stuck arrow is aleady past its life timer. + -- If yes, delete it. + self._fuse = minetest.get_gametime() - data.stuckstarttime + if self._fuse > ARROW_TIMEOUT then + mcl_burning.extinguish(self.object) + self.object:remove() + return + end + end + + self._fuse = 2 + -- Perform a stuck recheck on the next step. + self._fuserechecktimer = STUCK_RECHECK_TIME + + self._stuckin = data.stuckin + end + + -- Get the remaining arrow state + self._lastpos = data.lastpos + self._startpos = data.startpos + self._damage = data.damage + self._is_critical = data.is_critical + if data.shootername then + local shooter = minetest.get_player_by_name(data.shootername) + if shooter and shooter:is_player() then + self._shooter = shooter + end + end + end + self.object:set_armor_groups({ immortal = 1 }) +end + +minetest.register_entity("mcl_bows:rocket_entity", ARROW_ENTITY) + +if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_mobitems") then + minetest.register_craft({ + output = "mcl_bows:rocket 1", + recipe = { + {"mcl_core:paper"}, + {"mcl_fireworks:rocket_2"}, + {"mcl_bows:arrow"}, + } + }) +end + +if minetest.get_modpath("doc_identifier") then + doc.sub.identifier.register_object("mcl_bows:rocket_entity", "craftitems", "mcl_bows:rocket") +end diff --git a/mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_drawback_0.ogg b/mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_drawback_0.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f4f81b30749b453245ee3b3280244ceecb167fe0 GIT binary patch literal 13529 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

f;m2@iI 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�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 Qoyb|&u<}Xhfw1ns0I+TuF#rGn literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_load.ogg b/mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_load.ogg new file mode 100644 index 0000000000000000000000000000000000000000..02d2fd1afcbb49c4eb423909287e3c80378435a0 GIT binary patch literal 7627 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_shoot.ogg b/mods/ITEMS/mcl_bows/sounds/mcl_bows_crossbow_shoot.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a7d7b69d12fdd3ff614c0c612faa7a2d03f40459 GIT binary patch literal 9767 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 h@mz2nxK18jA1T) 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 Z2QkYyuAV!?7LKUJE;D1-4Oakw2LP@;_w)b& literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/sounds/mcl_bows_firework_soft.ogg b/mods/ITEMS/mcl_bows/sounds/mcl_bows_firework_soft.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8b2e7bc5bdf0d5d25ae4a1c89c881e0ff4900369 GIT binary patch literal 55786 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 c-je@FEoVy(XtS8|T4%!zRSg4e&Hs=55ATUp8vp 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_1.png b/mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3769f2967b880e0b3eaa1162b8db067891f48b19 GIT binary patch literal 2383 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_3.png b/mods/ITEMS/mcl_bows/textures/mcl_bows_crossbow_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8a8f1b03fcfaf94a5ef572da591dc05a5c80080f GIT binary patch literal 2794 zcmV zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1b<(kmwn{Ld+J1SGK@hqWp<$nn!482j6j_bTy} zJ&XpB=$0C6#$SI<^9Mf6$r?zd4pCBL4WIdK zTaw6`n`KOn^bD25Yf{1K- zutHqCG8bVi=GHHIfe@O9H@^YC*P-9O(A{E03hhl&^Py!XLJpN!AG1PLzq5JC(~&IyK%pDNe$vC;i@9Io z&G__7yz##=XBKt;2XhA0edX;N*81A#+Gb3vaA9f%)rUTXlflmH$0?Ot=kQx zC`I+-Ld?ejVJqoanl3n_y_&5>zl2Cb2w4%qX6^R`*`Al4k@z~qIZU~iM!v5+E{dLS zjJc*e14ag1A8`e&gA|_-eC|6kOw_Ud1>bmM|N9LiQKo zWgHya2;91ME`kXzh*lbv?QcpONb8~Ar?Z1?F&|S4DIRaLv%=n56;a%6hr~{cd zFI+TEAFyjys$O5Xl`yZMrGXqM@)eo= zxvP1Dmk&cZ4Jg#S58V}AISx4O6m?u@59JW9menk?hdHPj$l7tb^oF{u@;unjMKn3+ zyeM~*qz6ri(Y`6TneBNSq@JzQ}FreA5N>8^s-{8(SK`?t{e}}oa zr1n19M`-dH*#gep<1mPwskPhXrAa=Y{4_{V|F|h94itINWn@m{F0Nwf<1DYaj?GiW zg>q1-U4nR2GL*3PtSy*JYp3Q5Sj-PVQ|Ln6+jOT$4UURm*+}WgU+ZoRrEPeeN41=n z7_}ohTY-As!nPn~m5d`VB z+_im4e;F(~3}*l_PuE=pGGDTUDk}Qq@#pO8EbcW+JYa7M>ZPD4i4gTieA+%`tR_>2 z?dT;Gz+N`YD`Ys~#|h6zwp#D;c#tWBl))Bg8DWo^!+5GhlaT zm*qBN*0RZorUWf&Bx=#Hg;XqU51~751R?ag7vBXnrtxIj=ro$?5h+_Cr6o0&%U+g%Qq9uwwC5 z&^lQW6>-!m6rn<>6nNgNw7S4z7YA_yOYP=A`H%CH^ld zw21NGxF7HCJ?`EC{ziqVX4g2NYL<~sCWLHmRS3Q!gfIpW!R+1FrbK+5hE=c^yb=l=N&P9j)JTqcs z((}X-Vxice zlu?0&IIS8fCepN@@bC{gevw=D3zHLWQaAy0zu5Li3<&N5 z&AM%WAKP~G1PD9>S6bU&Z2&W$q}SV8^a$wN1}?7Kn!E>G?f`>Nx@1U>6rkxZ6oB_L z`lcMve+z`x+}>LIIDG&z)K%&RI5-4Gij=+X@$R0^-u^w)>hA}qVsgCR_H%jw000JJ zOGiWi{{a60|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^Rg3Jet{5jnU; z#Q*>TP)S5VR5;6(liN-cQ51&1J)L$+TZ^=uiY=5wYYa*uMloVABwi3N@D+Rn?|cPc zhlB`35{)7#3Q;tiO=+p+(9)sh)WUSO7f4|eFJxV=WPN-6|NfVdQu4nw&~sDn77i($ z8Z0Nb1b_;V{+*CBpFT1%I?h^Zo3XJmF*rCVT}Rsh==(vPi@tikC}DV`X-n_cAjP;UjG0L)BJTOd6RCcSq;^ma8~ca>d41LmM#kR)@MiQihMwm0#wI--^|S=eULKiT;QLxiT(}{ufOE~y zVqRu*dAcJ(;^`dmlumj#&)iBM5au(6|)FXSwc8n3f5 zJP)EX>4Tx04R}tkv&MmKpe$iTSX}?4pxxj5U@H~5EXIMDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|=H{g6A|?JWDYS_3;J6>}?mh0_0scmXsb<$WplX(p zP9}tGZdK@cMG#>OU>H$}nfjb4rrU7TlmpZjx!mAuISpFljzbi*RvAfDc| zbk6(45mu5E;&b9LgDyz?$aUG}H_kbWYY7*5n`d(!Ey()lA#h$5yuo&qkMnX zWrgz=XSGset$XqphVt6VGS_JiA&EsSL4*JqHIz|-g*dGmDJIgipYZTU9luB}nOtQs zax9<<6_Voz|AXJ%nuW;;Hz||=x?gPjV+82g1)6o+{yw(t<_QpZ2ClTWzuEw1K1r{) zwb&8Rw+&oew>5bWxZD8-pLEHP94SE4Unl_YXY@@up#K&KuDQLn_Hp_EWT>mu4RCM> zj20<--Q(T8oxS~grq$mMb0c!6Z+X|p00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-^y4HYOcBZGFMrBF3SeR&5wJigHAyB(A!a=4p1=Eh>-j%~ z21y}iM}1CFKJ0p4fBL)s;&&7c3=9mSe9X#H?5xa;XsUnz{m;Pg6WvJ=z{I0>-j%O%v0af0BI&KZ!?y} QCIA2c07*qoM6N<$f>%QorT_o{ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/textures/mcl_bows_firework_green.png b/mods/ITEMS/mcl_bows/textures/mcl_bows_firework_green.png new file mode 100644 index 0000000000000000000000000000000000000000..acd74d6d1c59b86acfa3c74c9861a414b28f061c GIT binary patch literal 627 zcmV-(0*w8MP)EX>4Tx04R}tkv&MmKpe$iTSX}?4pxxj5U@H~5EXIMDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|=H{g6A|?JWDYS_3;J6>}?mh0_0scmXsb<$WplX(p zP9}tGZdK@cMG#>OU>H$}nfjb4rrU7TlmpZjx!mAuISpFljzbi*RvAfDc| zbk6(45mu5E;&b9LgDyz?$aUG}H_kbWYY7*5n`d(!Ey()lA#h$5yuo&qkMnX zWrgz=XSGset$XqphVt6VGS_JiA&EsSL4*JqHIz|-g*dGmDJIgipYZTU9luB}nOtQs zax9<<6_Voz|AXJ%nuW;;Hz||=x?gPjV+82g1)6o+{yw(t<_QpZ2ClTWzuEw1K1r{) zwb&8Rw+&oew>5bWxZD8-pLEHP94SE4Unl_YXY@@up#K&KuDQLn_Hp_EWT>mu4RCM> zj20<--Q(T8oxS~grq$mMb0c!6Z+X|p00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-^y4HYOI7BNEw0001jNklYzcxul;3SeR&5wJig1tv8yW=TBiUj2Rk;NLBT z1~FzyOHM~2W>KuF-~D}k{QG_s4GatnLd>G_?8+>RtZ1tL{Qu4H6T?YR4kIfwBQupf zJsdQ!pobs^Koev^jveIiMvFLf4X^$_KmL6`{-lAT;laOKkeH{wrvVGvFD=Wy1!MpK N002ovPDHLkV1m_i4Y~jT literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/textures/mcl_bows_firework_red.png b/mods/ITEMS/mcl_bows/textures/mcl_bows_firework_red.png new file mode 100644 index 0000000000000000000000000000000000000000..4d7355c57a57e45bcf3060f4831604a1bc07d10a GIT binary patch literal 622 zcmV-!0+IcRP)EX>4Tx04R}tkv&MmKpe$iTSX}?4pxxj5U@H~5EXIMDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|=H{g6A|?JWDYS_3;J6>}?mh0_0scmXsb<$WplX(p zP9}tGZdK@cMG#>OU>H$}nfjb4rrU7TlmpZjx!mAuISpFljzbi*RvAfDc| zbk6(45mu5E;&b9LgDyz?$aUG}H_kbWYY7*5n`d(!Ey()lA#h$5yuo&qkMnX zWrgz=XSGset$XqphVt6VGS_JiA&EsSL4*JqHIz|-g*dGmDJIgipYZTU9luB}nOtQs zax9<<6_Voz|AXJ%nuW;;Hz||=x?gPjV+82g1)6o+{yw(t<_QpZ2ClTWzuEw1K1r{) zwb&8Rw+&oew>5bWxZD8-pLEHP94SE4Unl_YXY@@up#K&KuDQLn_Hp_EWT>mu4RCM> zj20<--Q(T8oxS~grq$mMb0c!6Z+X|p00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-^y4HYO23x-o+0001eNklYjYH!a#3SeR&5wJk@si`qbO5#!X_xbaGw{9Uc zFiT2uIyy3oiegv&`t|qy`%yG7FfcHSin1#!GqSRxss8`__fJeGK>#BwD zaB^>EX>4U6ba`-PAZ2)IW&i+q+TB-Mmg6W4{nsjH2}nXbmV?2Z(>v(p&&4*bI92IN zI`uJULfMjKA;i5PT(tiF)#)Gn#IcaKm_iQ0;pel@QlKQa|MGTc=ePUu;HGl1)A<5n zokHsV7|Y>bV7HGBa|~Xtc1p(^Nk^a=`3R_EWP#FdlZ0J%JNqM0UUwzr6mL^qWS8}D z+)_C%ja%q5$atn(gO5O|8N5_vRaUp%)1HBji?s~CnMleQ~hmHR9@|8xt*8vf` zbYg|PWUO4IF_;^7c!3b^2XD3kJljFPyIDV2s$kGIm=h*g+_HyQj6c?vZagde407KU zOtBpS01?JEB*O{@Twpa0?4n3y295~?6=W{h8w(g=xfG#-feK<3_!n3fS#En$gETJlmVmQVH7YN)ZMnrms& zw4qG2&|*t1x3V&=s1&PTZ4GN&)0)@PvDUhF->rupd+NEDleL4@PwfTP_+U*oriNcU zS%Z~goFRCW6C0d?G4Tw><6r;_S_Wq>vG+2V8=Sc;*c2v6(gruwcrXSE{mNpUPwqaL zdx|%*^b~LM9dk6O`w8X<)P3gd3)b2==jz7Tz6%GYPOqvPyOB}Pn z$B~>6F+B%GK6;v;QF)z7t(%D+bEAGvpruLIIwLPfWS)}l4R=x|8UD;5&Veqd(6g}Q z&#+u1eGiL1g5`n+y#dQb(i^Z`B)tL4MbaCvTqL~#%SF-~uv}1~H(0dQdoLY*vb#nj!0flKpLr_UWLm+T+Z)Rz1WdHzpoPCi!NW(xJ#a~mUQd%7> z_<=))>SRGw#8InIgbJlrXw|{w(hs3YLz3d+D7Y3J{8+3yxH#+T;3^1$A0TdSPKqv4 z;{TFDix>}%`|XH%&pJjd5P ze0;r&@htCie~z${HyPj)iD#H@Sj6kZQ=68~d7n7KN|Hi+PCRPR1&JTIF1!53x#+OK zGb2VOJx3fN7K?2xw=pXjD)A(7R8cj`7qTuZoVPfu%gm2FkDyqg5ltM4I;F9{xecpCXq`t_?79%%cJolH&*egWuhng^6)DDHI1fUu^qh z7zpeFjhbzLAKP~01n@rtS6a(osRPrWq}N(n^a$wL1}?5!n!E>G?g0Hyx@1U>MD5y92^28Mao|Dcz0KOZ~vZY_V)upL2{ECAdxKq z000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jvP57Y-u@zorTR004DKL_t(2&)t$e z4uBvGgZ%TyO0aUeK b{`;X<* zaB^>EX>4U6ba`-PAZ2)IW&i+q+Ray4lI$o9{MRYw2uL6h$H6QSbAvhlB;Z=Qt9q&K z_wkCbk!2x?OaU(H|NT4YAN+(xC}^^nV|4h19I_M$=JqeIJG-#%=YzWlZ}fD1Ay9er zem|yi+85~cHsBJ2kGFcV^NrZ)=;HZw=x1bs(C(9jUbddY=_vOt#BAw4)kAh)Ps5eU zdHJ+lU!BZnx>tk*l$yfIi*(Q4t-I|E{JhwgsbBX1JN9wOp3nt-o5|;>0vtOHAb^B`kq}05s1dK zq8we&nPXsh0CK;EMYM!VA*aa%U2qWQ71&~ z?1~lgl3BS(V=_1IumT}GPTq6@d}$~B?yi1Ns$ftT%!UaTcWf7j@~yV~;@QJa(eG8k zl-lV45FxfA8TMenMfS>(T@p#mz|lZZLFR(Baex6Fw{^{uR&F#CNrp{ya^?~q0Rz^jOLGWZ{9&kVE$^Fv7 zU*zaWK^dPQD3=_?Xlgq)fZrxY7om(Dz~`u8s^qZH?4xnbZ<`iE!>Y+A*M zv&`K~Ju<>N+uohjnzvZ799*rphwxQuv~z1`qRnS_v^`1XY<=mA1zx)O;qpOGr{Lp? zkQt}&lDcA>b!ExJSwFnrNel@+KhAE0?XdQ@m0HJA-@Zl)9m{=>@6`)$eSDS|Jxx?} zN#^P}39KztIUy5Y>H~iCHMjTpwUZZ|=cY@{=2ld~PPxN>+~<`i_E5j)-?1}3z(=3p z_Y!>c34SlZN1x#L5`6RtelNjCpWycreDt&Od+h0F<@X35{jB^R;i8|F-y?kV?edec zLTL*T|6`WE@GTAcg5Nz;eB~?eY2xpbdxjsqQh)LG@USz}i(B)DJ2QQAYkqf%Jsx88 zyVLA;h|#xBv2XPBC(ix9$kD(DSVmR<4>_^-vPu8QtpET4g=s@WP)S2WAaHVTW@&6? z004NLeUUv#!$2IxUsI)0S{*F-fkTGsWIiY`*(|B^zB7!Qv7@$TN^?j0c1%S<&p#sF2bjC3L{W^*fI z;1xl1qYq&WNX*n{Q>i38$Jaf4e7%eDEbnuFjF%XP9nS#OuUUo0iUbpE$xw zl0tk=JZjJdi66NxyZpwv=&-;uBSt1YM;sv*i)}2oF)JA=@g#9nQ8mgJvMwu}w>Yci zDr?@8zc7^7mY29ra|j76U=b;ZkWs}3%CHclRU^ejn)c%!{z1o|B9~0A4KQ-dqXHF@ z;|KqP-`$#piE%e66bCwAZ2Myv2@ApqkCqV!s6DuPlGk$N9?CIg4fdwrD zF-`dY?>BZ0e}BIIi8GpCqigv4^ZEBT`|&3Y6b=8r-GanC^*s#$Sz#~>;{u0_00000 LNkvXXu0mjfC5$>B literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bows/textures/mcl_bows_rocket.png b/mods/ITEMS/mcl_bows/textures/mcl_bows_rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..800185ce08db4e4327442dcee0a0393223ad1bc5 GIT binary patch literal 2133 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 FV1hj1Dy9Gc literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index ecc9fe113..17b6b6ac6 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -379,8 +379,8 @@ mcl_enchanting.enchantments.mending = { inv_tool_tab = true, } --- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.multishot = { + +mcl_enchanting.enchantments.multishot = { name = S("Multishot"), max_level = 1, primary = {crossbow = true}, @@ -396,10 +396,10 @@ mcl_enchanting.enchantments.mending = { power_range_table = {{20, 50}}, inv_combat_tab = true, inv_tool_tab = false, -}]]-- +} -- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.piercing = { +mcl_enchanting.enchantments.piercing = { name = S("Piercing"), max_level = 4, primary = {crossbow = true}, @@ -415,7 +415,7 @@ mcl_enchanting.enchantments.mending = { power_range_table = {{1, 50}, {11, 50}, {21, 50}, {31, 50}}, inv_combat_tab = true, inv_tool_tab = false, -}]]-- +} -- implemented in mcl_bows mcl_enchanting.enchantments.power = { @@ -456,7 +456,7 @@ mcl_enchanting.enchantments.punch = { } -- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.quick_charge = { +mcl_enchanting.enchantments.quick_charge = { name = S("Quick Charge"), max_level = 3, primary = {crossbow = true}, @@ -472,7 +472,7 @@ mcl_enchanting.enchantments.punch = { power_range_table = {{12, 50}, {32, 50}, {52, 50}}, inv_combat_tab = true, inv_tool_tab = false, -}]]-- +} -- unimplemented --[[mcl_enchanting.enchantments.respiration = { diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index 6c5d7f6e4..b756d4a6d 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -230,7 +230,7 @@ local function spawn_mobs(pos, elapsed) -- spawn up to 4 mobs in random air blocks if air then - local max = 4 + local max = 200 if spawn_count_overrides[mob] then max = spawn_count_overrides[mob] end @@ -387,4 +387,3 @@ minetest.register_lbm({ respawn_doll(pos) end, }) - diff --git a/mods/ITEMS/mcl_potions/tipped_arrow.lua b/mods/ITEMS/mcl_potions/tipped_arrow.lua index ab55cb72a..1717533a8 100644 --- a/mods/ITEMS/mcl_potions/tipped_arrow.lua +++ b/mods/ITEMS/mcl_potions/tipped_arrow.lua @@ -463,4 +463,4 @@ function mcl_potions.register_arrow(name, desc, color, def) if minetest.get_modpath("doc_identifier") then doc.sub.identifier.register_object("mcl_bows:arrow_entity", "craftitems", "mcl_bows:arrow") end -end \ No newline at end of file +end diff --git a/mods/PLAYER/mcl_player/init.lua b/mods/PLAYER/mcl_player/init.lua index a3c769741..2a4c25c34 100644 --- a/mods/PLAYER/mcl_player/init.lua +++ b/mods/PLAYER/mcl_player/init.lua @@ -9,7 +9,7 @@ local animation_blend = 0 local function get_mouse_button(player) local controls = player:get_player_control() local get_wielded_item_name = player:get_wielded_item():get_name() - if controls.RMB and not string.find(get_wielded_item_name, "mcl_bows:bow") or controls.LMB then + if controls.RMB and not string.find(get_wielded_item_name, "mcl_bows:bow") and not string.find(get_wielded_item_name, "mcl_bows:crossbow") or controls.LMB then return true else return false @@ -212,9 +212,9 @@ minetest.register_globalstep(function(dtime) player_set_animation(player, "swim_walk_mine", animation_speed_mod) elseif not controls.sneak and head_in_water and is_sprinting == true then player_set_animation(player, "swim_walk", animation_speed_mod) - elseif string.find(player:get_wielded_item():get_name(), "mcl_bows:bow") and controls.RMB and controls.sneak then + elseif string.find(player:get_wielded_item():get_name(), "mcl_bows:bow") and controls.RMB and controls.sneak or string.find(player:get_wielded_item():get_name(), "mcl_bows:crossbow_") and controls.sneak then player_set_animation(player, "bow_sneak", animation_speed_mod) - elseif string.find(player:get_wielded_item():get_name(), "mcl_bows:bow") and controls.RMB then + elseif string.find(player:get_wielded_item():get_name(), "mcl_bows:bow") and controls.RMB or string.find(player:get_wielded_item():get_name(), "mcl_bows:crossbow_") then player_set_animation(player, "bow_walk", animation_speed_mod) elseif is_sprinting == true and get_mouse_button(player) == true and not controls.sneak and not head_in_water then player_set_animation(player, "run_walk_mine", animation_speed_mod) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 1f881d2b6..f86d5e26a 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -127,6 +127,7 @@ minetest.register_globalstep(function(dtime) for _,player in pairs(get_connected_players()) do --[[ + _ _ _ __ _ _ __ (_)_ __ ___ __ _| |_(_) ___ _ __ ___ / _` | '_ \| | '_ ` _ \ / _` | __| |/ _ \| '_ \/ __| @@ -220,6 +221,10 @@ minetest.register_globalstep(function(dtime) player:set_bone_position("Wield_Item", vector.new(0,3.9,1.3), vector.new(90,0,0)) elseif string.find(wielded:get_name(), "mcl_bows:bow") then player:set_bone_position("Wield_Item", vector.new(.5,4.5,-1.6), vector.new(90,0,20)) + elseif string.find(wielded:get_name(), "mcl_bows:crossbow_loaded") then + player:set_bone_position("Wield_Item", vector.new(-1.5,5.7,1.8), vector.new(64,90,0)) + elseif string.find(wielded:get_name(), "mcl_bows:crossbow") then + player:set_bone_position("Wield_Item", vector.new(-1.5,5.7,1.8), vector.new(90,90,0)) else player:set_bone_position("Wield_Item", vector.new(-1.5,4.9,1.8), vector.new(135,0,90)) end @@ -231,6 +236,14 @@ minetest.register_globalstep(function(dtime) if string.find(wielded:get_name(), "mcl_bows:bow") and control.RMB then player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch+90,-30,pitch * -1 * .35)) player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3.5,5.785,0), vector.new(pitch+90,43,pitch * .35)) + -- controls right and left arms pitch when holing a loaded crossbow + elseif string.find(wielded:get_name(), "mcl_bows:crossbow_loaded") then + player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch+90,-30,pitch * -1 * .35)) + player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3.5,5.785,0), vector.new(pitch+90,43,pitch * .35)) + -- controls right and left arms pitch when loading a crossbow + elseif string.find(wielded:get_name(), "mcl_bows:crossbow_") then + player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(45,-20,25)) + player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3,5.785,0), vector.new(55,20,-45)) -- when punching elseif control.LMB and not parent then player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch,0,0)) From e5c5a785533115a82cea5414f61e6844ed47b27d Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 24 Oct 2021 20:13:34 +0200 Subject: [PATCH 097/271] Update contribution guidelines --- CODE_OF_CONDUCT.md | 128 +++++++++++++++++++++++++++++++ CONTRIBUTING.md | 186 ++++++++++++++++++++++++++------------------- 2 files changed, 236 insertions(+), 78 deletions(-) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..8086a2f44 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +eliasfleckenstein@web.de. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1b5098a4f..84ac10f20 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,101 +1,127 @@ -# Contributing to MineClone 2 -So you want to contribute to MineClone 2? +# Contributing to MineClone2 +So you want to contribute to MineClone2? Wow, thank you! :-) But first, some things to note: -MineClone 2's development target is to make a free software clone of Minecraft, -***version 1.12***, ***PC edition***, *** + Optifine features supported by the Minetest Engine ***. +MineClone2's development target is to make a free software clone of Minecraft, +***version 1.17***, ***Java Edition***, *** + Optifine features supported by the Minetest Engine***. The priority is making polished features up to version 1.12. -MineClone 2 is maintained by three persons. Namely, kay27, EliasFleckenstein and jordan4ibanez. You can find us -in the Minetest forums (forums.minetest.net), in IRC in the #mineclone2 -channel on irc.freenode.net. And finally, you can send e-mails to - or . +MineClone2 is maintained by Nicu and Fleckenstein. If you have any +problems or questions, contact us (See Links section below). -By sending us patches or asking us to include your changes in this game, -you agree that they fall under the terms of the LGPLv2.1, which basically -means they will become part of a free software. +You can help with MineClone2's development in many different ways, +whether you're a programmer or not. -## The suggested workflow -We don't **dictate** your workflow, but in order to work with us in an efficient -way, you can follow these suggestions: +## Links +* [Mesehub](https://git.minetest.land/MineClone2/MineClone2) +* [Discord](https://discord.gg/xE4z8EEpDC) +* [YouTube](https://www.youtube.com/channel/UClI_YcsXMF3KNeJtoBfnk9A) +* [IRC](https://web.libera.chat/#mineclone2) +* [Matrix](https://app.element.io/#/room/#mc2:matrix.org) +* [Reddit](https://www.reddit.com/r/MineClone2/) +* [Minetest forums](https://forum.minetest.net/viewtopic.php?f=50&t=16407) -For small and medium changes: +## Using git +MineClone2 is developed using the version control system [git](https://git-scm.com/). If you want to +contribute code to the project, it is **highly recommended** that you learn the git basics. +However, if you're not a programmer or don't plan to help with the coding part of the development, +it's still useful if you know it - in case you want to contribute files that are not related to code, +or to easily keep your game updated and test out pull requests. However, it's not required in this +case. -* Fork the repository +## How you can help as a non-programmer + +As someone who does not know how to write programs in Lua or does not +know how to use the Minetest API, you can still help us out a lot. +For example, by opening an issue in the [Issue tracker](https://git.minetest.land/MineClone2/MineClone2/issues), you can +report a bug or request a feature. + +### Rules about both bugs and feature requests +* Stay polite towards the developers and anyone else involved in the discussion. +* Choose a descriptive title. +* Try to use proper english and please start the title with a capital letter. +* Always check the currently opened issues before creating a new one. Don't report bugs that have already been reported or request features that already have been requested. +* If you know about Minetest's inner workings, please think about whether the bug / the feature that you are reporting / requesting is actually an issue with Minetest itself, and if it is, head to the [Minetest issue tracker](https://github.com/minetest/minetest/issues) instead. +* If you need any help regarding creating a Mesehub account or opening an issue, feel free to ask on the Discord / Matrix server or the IRC channel. + +### Reporting bugs +* A bug is an unintended behavior or, in the worst case, a crash. However, it is not a bug if you believe something is missing in the game. In this case, please read "Requesting features" +* If you report a crash, always include the error message. If you play in singleplayer, post a screenshot of the message that minetest showed when the crash happened (or copy the message into your issue). If you are a server admin, you can find error messages in the log file of the server. +* Tell us which MineClone2 and minetest versions you are using. +* It's always useful to tell us what you were doing to trigger the bug, e.g. before the crash happened or what causes the faulty behavior + +### Requesting features +* Make sure the feature you request is Minecraft 1.17 Java Edition or Optifine behavior. +* Don't beg for something to be implemented. We are not going to rethink our development roadmap because someone sais "Pls pls make this I'm waiting for this so bad!!!11!". +* Check whether the feature has been implemented in a newer version of MineClone2, in case you are not using the latest one. + +### Testing code +If you want to help us with speeding up MineClone2 development and making the game more stable, a great way to do that is by testing out new features from contributors. +For most new things that get into the game, a pull request is created. A pull request is essentially a programmer saying "Look, I modified the game, please apply my changes to the upstream version of the game". +However, every programmer makes mistakes sometimes, some of which are hard to spot. You can help by downloading this modified version of the game and trying it out - then you tell us whether the code works and does what it claims to do or whether you have encountered any issues. +You can find currently open pull requests here: . Note that pull requests that start with a `WIP:` are not done yet, and therefore might not work, so it's not very useful to try them out yet. + +### Profiling +If you own a server, a great way to help us improve MineClone2's code is by giving us profiler results. Profiler results give us detailed information about the game's performance and let us know where the real troublespots are. This way we can make the game faster. +Minetest has a built in profiler. Simply set `profiler.load = true` in your configuration file and restart the server. After running the server for some time, just run `/profiler save` in chat - then you will find a file in the world directory containing the results. Open a new issue and upload the file. You can name the issue " profiler results". + +### Let us know your opinion +It is always encouraged to actively contribute to issue discussions, let us know what you think about a topic and help us make decisions. + +### Crediting +If you opened or have contributed to an issue, you receive the `Community` role on our Discord (after asking for it). + +## How you can help as a programmer +(Almost) all the MineClone2 development is done using pull requests. If you feel like a problem needs to fixed or you want to make a new feature, you could start writing the code right away and notifying us when you're, but it it never hurts to discuss things first. If there is no issue on the topic, open one. If there is an issue, tell us that you'd like to take care of it, to avoid duplicate work. Note that we appreciate any effort, so even if you are a relatively new programmer, you can already contribute to the project - if you have problems or questions regarding git, Lua, or the Minetest API - or the MineClone2 codebase, feel free to ask them on our Discord. +By asking us to include your changes in this game, you agree that they fall under the terms of the GPLv3, which basically means they will become part of a free software. +If your code leads to bugs or crashes after being merged, it is your responsibility to fix them as soon as possible. + +### The recommended workflow +* Fork the repository (in case you have not already) * Do your change in a new branch * Create a pull request to get your changes merged into master +* Keep your pull request up to date by regulary merging upstream +* After the pull request got merged, you can delete the branch -For small changes, sending us a patch is also good. +### Git Guidelines +* We use merge rather than rebase or squash merge +* We don't use git submodules. +* Your commit names should be relatively descriptive, e.g. when saying "Fix #issueid", the commit message should also contain the title of the issue. -For big changes: Same as above, but consider notifying us first to avoid -duplicate work and possible tears of rejection. ;-) +### Code Guidelines +* Each mod must provide `mod.conf`. +* Each mod which add API functions should store functions inside a global table named like the mod. +* Public functions should not use self references but rather just access the table directly. +* Use modern Minetest API +* Use spaces instead of tabs +* Even if it improves performance, it is discouraged to localize variables at the beggining of files, since if another mod overrides some of the functions / variables you localized, you will still have a reference to the old function. -For trusted people, we might give them direct commit access to this -repository. In this case, you obviously don't need to fork, but you still -need to show your contributions align with the project goals. We still -reserve the right to revert everything that we don't like. -For bigger changes, we strongly recommend to use feature branches and -discuss with me first. +### Changes to Gameplay +Pull Requests that change gameplay have to be properly researched and need to state their sources. These PRs also need Fleckenstein's approval before they are merged. +You can use these sources: -If your code causes bugs and crashes, it is your responsibility to fix them as soon as possible. +* Minecraft code (Name the source file and line, however DONT post any proprietary code). You can use MCP to decompile Minecraft. +* Testing things inside of Minecraft (Attach screenshots / video footage of the results) +* Official Minecraft Wiki (Include a link to the page) -We mostly use plain merging rather than rebasing or squash merging. +### Developer status +Active and trusted contributors are often granted write access to the MineClone2 repository. However you should not push things directly to MineClone2 master - rather, do your work on a branch on your private repo, then create a pull request. This way other people can review your changes and make sure they work before they get merged. You are allowed to merge PRs if they have recieved the necessary feedback. +You may also be assigned to issues or pull requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can also unassign yourself from the issue / PR if you have no time or don't want to take care of it for some other reason (after all, everyone is a volunteer and we can't expect you to do work that you are not intrested in) - the important thing is really that you make sure to inform us if you won't take care of something that has been assigned to you. +Also, please assign yourself to something that you want to work on to avoid duplicate work. +As a developer, it should be easy to reach you about your code. You should be on the Discord (or, if you really don't like Discord, Matrix or IRC). -Your commit names should be relatively descriptive, e.g. when saying "Fix #issueid", the commit message should also contain the title of the issue. +### Maintainer status +Maintainers are responsible for making sure issues are addressed and pull requests are reviewed and merged, by assigning either themselves or Developers to issues / PRs. +Maintainers are responsible for making releases, making sure guidelines are kept and making project decisions based on what the community wants. +Maintainers grant/revoke developer access. -Contributors will be credited in `CREDITS.md`. +Currently there are two maintainers with different responsibility fields: -## Code Style +* Fleckenstein - responsible for gameplay review, technical guidelines and issue/PR delegation +* Nicu - responsible for community related issues -Each mod must provide `mod.conf`. -Each mod which add API functions should store functions inside a global table named like the mod. -Public functions should not use self references but rather just access the table directly. -Functions should be defined in this way: -``` -function mcl_xyz.stuff(param) end -``` -Insteed of this way: -``` -mcl_xyz.stuff = function(param) end -``` -Indentation must be unified, more likely with tabs. - -Time sensitive mods should make a local copy of most used API functions to improve performances. -``` -local vector = vector -local get_node = minetest.get_node -``` - - -## Features > 1.12 - -If you want to make a feature that was added in a Minecraft version later than 1.12, you should fork MineClone5 (mineclone5 branch in the repository) and add your changes to this. - -## What we accept - -* Every MC features up to version 1.12 JE. -* Every already finished and working good features from versions above (only when making a MineClone5 PR / Contribution). -* Except features which couldn't be done easily and bugfree because of Minetest engine limitations. Eg. we CAN extend world boundaries by playing with map chunks, just teleporting player onto next layer after 31000 , but it would cost too much (time, code, bugs, performance, stability, etc). -* Some features, approved by the rest of the community, I mean maybe some voting and really missing any negative feedback. - -## What we reject - -* Any features which cause critical bugs, sending them to rework/fix or trying to fix immediately. -* Some small portions of big entirely missing features which just definitely break gamplay balance give nothing useful -* Controversial features, which some people support while others do not should be discussed well, with publishing forum announcements, at least during the week. In case if there are still doubts - send them into the mod. - -## Reporting bugs -Report all bugs and missing Minecraft features here: - - - -## Direct discussion -We have an IRC channel! Join us on #mineclone2 in freenode.net. - - - -## Creating releases +#### Creating releases * Launch MineClone2 to make sure it still runs * Update the version number in README.md * Use `git tag ` to tag the latest commit with the version number @@ -103,3 +129,7 @@ We have an IRC channel! Join us on #mineclone2 in freenode.net. * Update ContentDB (https://content.minetest.net/packages/Wuzzy/mineclone2/) * Update first post in forum thread (https://forum.minetest.net/viewtopic.php?f=50&t=16407) * Post release announcement and changelog in forums + +## Crediting +Contributors, Developers and Maintainers will be credited in `CREDITS.md`. If you make your first time contribution, please add yourself to this file. +There are also Discord roles for Contributors, Developers and Maintainers. From 5c55ddff1e77db995979c6e64457190455fa07f5 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 24 Oct 2021 20:21:54 +0200 Subject: [PATCH 098/271] Delete merge artifact --- CONTRIBUTING.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 67554d9fa..84ac10f20 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -81,7 +81,6 @@ If your code leads to bugs or crashes after being merged, it is your responsibil * Fork the repository (in case you have not already) * Do your change in a new branch * Create a pull request to get your changes merged into master -<<<<<<< HEAD * Keep your pull request up to date by regulary merging upstream * After the pull request got merged, you can delete the branch From 832e634e3bae8e37657a5e8eb23950d6c37c0509 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 24 Oct 2021 20:44:37 +0200 Subject: [PATCH 099/271] Use tabs instead of spaces, spaces are braindead --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 84ac10f20..b47ab9aa0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -94,7 +94,7 @@ If your code leads to bugs or crashes after being merged, it is your responsibil * Each mod which add API functions should store functions inside a global table named like the mod. * Public functions should not use self references but rather just access the table directly. * Use modern Minetest API -* Use spaces instead of tabs +* Use tabs instead of spaces * Even if it improves performance, it is discouraged to localize variables at the beggining of files, since if another mod overrides some of the functions / variables you localized, you will still have a reference to the old function. ### Changes to Gameplay From dafe860e56ac7ce866affe414fe7eef20b5fd3db Mon Sep 17 00:00:00 2001 From: NO11 Date: Sun, 24 Oct 2021 19:31:51 +0000 Subject: [PATCH 100/271] simple totem particles --- mods/ITEMS/mcl_totems/init.lua | 77 +++++++++------------------------- 1 file changed, 20 insertions(+), 57 deletions(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index 2206fcb2a..79b2c8de0 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -4,49 +4,7 @@ minetest.register_on_leaveplayer(function(player) hud_totem[player] = nil end) --- Totem particle registration - -function rgb_to_hex(r, g, b) - return string.format("%02x%02x%02x", r, g, b) -end - -minetest.register_entity("mcl_totems:totem_particle", { - physical = true, - collide_with_objects = false, - collisionbox = { -0.02, -0.02, -0.02, 0.02, 0.02, 0.02 }, - pointable = false, - visual = "sprite", - visual_size = { x = 0.2, y = 0.2 }, - spritediv = { x = 1, y = 1 }, - initial_sprite_basepos = { x = 0, y = 0 }, - static_save = false, - glow = 14, - on_activate = function(self, staticdata) - local color - if math.random(0, 3) == 0 then - color = rgb_to_hex( 153 + math.random() * 51, 153 + math.random() * 76.5, math.random() * 51) - else - color = rgb_to_hex(25.5 + math.random() * 102, 153 + math.random() * 76.5, math.random() * 51) - end - self.object:set_properties({ - textures = { "mcl_particles_totem"..math.random(1, 4)..".png^[colorize:#"..color } - }) - local t = math.random(1, 2)*math.random() - minetest.after(t, function() - self.object:set_velocity({ x = math.random(-4, 4) * math.random(), y = math.random(-1, 4) * math.random(), z = math.random(-4, 4) * math.random() }) - end) - minetest.after(0.3 + t, function() - self.object:set_acceleration({ x = 0, y = -4, z = 0 }) - self.object:set_velocity({ x = 0, y = 0, z = 0 }) - end) - end, - on_step = function(self, dtime) - local r = math.random(1, 50) - if r == 1 then - self.object:remove() - end - end -}) +local particle_colors = {"98BF22", "C49E09", "337D0B", "B0B021", "1E9200"} -- TODO: real MC colors -- Save the player from death when holding totem of undying in hand mcl_damage.register_modifier(function(obj, damage, reason) @@ -74,27 +32,32 @@ mcl_damage.register_modifier(function(obj, damage, reason) end -- Effects - minetest.sound_play({ name = "mcl_totems_totem", gain = 1 }, { pos = ppos, max_hear_distance = 16 }, true) - - --Particles + minetest.sound_play({name = "mcl_totems_totem", gain = 1}, {pos=ppos, max_hear_distance = 16}, true) - minetest.after(0.1, function() - local new_pos = obj:get_pos() - if not new_pos then return end - local particlepos = { x = new_pos.x, y = new_pos.y + 1, z = new_pos.z } - for i = 1, 150 do - minetest.add_entity(particlepos, "mcl_totems:totem_particle") - end - end) + for i = 1, 100 do + minetest.add_particle({ + pos = vector.offset(ppos, 0, math.random(-10, 10) / 10, 0), + velocity = vector.new(math.random(-15, 15) / 10, math.random(0, 15) / 10, math.random(-15, 15) / 10), + acceleration = vector.new(0, -math.random(1, 10) / 10, 0), + expirationtime = math.random(1, 3), + size = math.random(1, 2), + collisiondetection = true, + collision_removal = true, + object_collision = false, + texture = "mcl_particles_totem" .. math.random(1, 4) .. ".png^[colorize:#" .. particle_colors[math.random(#particle_colors)], + glow = 10, + }) + + end -- Big totem overlay if not hud_totem[obj] then hud_totem[obj] = obj:hud_add({ hud_elem_type = "image", text = "mcl_totems_totem.png", - position = { x = 0.5, y = 1 }, - scale = { x = 17, y = 17 }, - offset = { x = 0, y = -178 }, + position = {x = 0.5, y = 1}, + scale = {x = 17, y = 17}, + offset = {x = 0, y = -178}, z_index = 100, }) minetest.after(3, function() From 6e94550a12ad7685a18e09fc5235238ac0a06770 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 08:44:12 +0000 Subject: [PATCH 101/271] Clarification about tab indent Signed-off-by: Elias Fleckenstein --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b47ab9aa0..1765a8799 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -94,7 +94,7 @@ If your code leads to bugs or crashes after being merged, it is your responsibil * Each mod which add API functions should store functions inside a global table named like the mod. * Public functions should not use self references but rather just access the table directly. * Use modern Minetest API -* Use tabs instead of spaces +* Use tabs for indentation (rather than spaces) * Even if it improves performance, it is discouraged to localize variables at the beggining of files, since if another mod overrides some of the functions / variables you localized, you will still have a reference to the old function. ### Changes to Gameplay From f3693138c85a3f91a79a5f26ab10bcc914e02062 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 08:46:33 +0000 Subject: [PATCH 102/271] Use proper English Signed-off-by: Elias Fleckenstein --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1765a8799..ebea65736 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,7 +5,7 @@ Wow, thank you! :-) But first, some things to note: MineClone2's development target is to make a free software clone of Minecraft, -***version 1.17***, ***Java Edition***, *** + Optifine features supported by the Minetest Engine***. The priority is making polished features up to version 1.12. +***version 1.17***, ***Java Edition***, *** + Optifine features supported by the Minetest Engine ***. The priority is making polished features up to version 1.12. MineClone2 is maintained by Nicu and Fleckenstein. If you have any problems or questions, contact us (See Links section below). @@ -40,7 +40,7 @@ report a bug or request a feature. ### Rules about both bugs and feature requests * Stay polite towards the developers and anyone else involved in the discussion. * Choose a descriptive title. -* Try to use proper english and please start the title with a capital letter. +* Try to use proper English and please start the title with a capital letter. * Always check the currently opened issues before creating a new one. Don't report bugs that have already been reported or request features that already have been requested. * If you know about Minetest's inner workings, please think about whether the bug / the feature that you are reporting / requesting is actually an issue with Minetest itself, and if it is, head to the [Minetest issue tracker](https://github.com/minetest/minetest/issues) instead. * If you need any help regarding creating a Mesehub account or opening an issue, feel free to ask on the Discord / Matrix server or the IRC channel. From b18e077ba3d99c0f2a3660a8b7a9bc5f973b98f4 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 08:47:56 +0000 Subject: [PATCH 103/271] Markdown fix to development target info Signed-off-by: Elias Fleckenstein --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ebea65736..4f3bc9c39 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,7 +5,7 @@ Wow, thank you! :-) But first, some things to note: MineClone2's development target is to make a free software clone of Minecraft, -***version 1.17***, ***Java Edition***, *** + Optifine features supported by the Minetest Engine ***. The priority is making polished features up to version 1.12. +***version 1.17***, ***Java Edition***, ***+ Optifine features supported by the Minetest Engine***. The priority is making polished features up to version 1.12. MineClone2 is maintained by Nicu and Fleckenstein. If you have any problems or questions, contact us (See Links section below). From b9999195ec99104aaa5ff6584600893c2bb739c8 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 16:52:56 +0200 Subject: [PATCH 104/271] Add publishing releases to my responsibility field --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b47ab9aa0..e9a14a54f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -118,7 +118,7 @@ Maintainers grant/revoke developer access. Currently there are two maintainers with different responsibility fields: -* Fleckenstein - responsible for gameplay review, technical guidelines and issue/PR delegation +* Fleckenstein - responsible for gameplay review, publishing releases, technical guidelines and issue/PR delegation * Nicu - responsible for community related issues #### Creating releases From 664244d25c5212bd672b3e42db70489a46771162 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 17:20:58 +0200 Subject: [PATCH 105/271] Make sure PRs are tested at least twice before being merged --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e9a14a54f..eaced68fa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -106,7 +106,7 @@ You can use these sources: * Official Minecraft Wiki (Include a link to the page) ### Developer status -Active and trusted contributors are often granted write access to the MineClone2 repository. However you should not push things directly to MineClone2 master - rather, do your work on a branch on your private repo, then create a pull request. This way other people can review your changes and make sure they work before they get merged. You are allowed to merge PRs if they have recieved the necessary feedback. +Active and trusted contributors are often granted write access to the MineClone2 repository. However you should not push things directly to MineClone2 master - rather, do your work on a branch on your private repo, then create a pull request. This way other people can review your changes and make sure they work before they get merged. You are allowed to merge PRs if they have recieved the necessary feedback and have been tested to not lead to any crashes and do what they claim to do by at least two different people. You may also be assigned to issues or pull requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can also unassign yourself from the issue / PR if you have no time or don't want to take care of it for some other reason (after all, everyone is a volunteer and we can't expect you to do work that you are not intrested in) - the important thing is really that you make sure to inform us if you won't take care of something that has been assigned to you. Also, please assign yourself to something that you want to work on to avoid duplicate work. As a developer, it should be easy to reach you about your code. You should be on the Discord (or, if you really don't like Discord, Matrix or IRC). From 4b1606eaee2d5da2c36e1892efae3bae37d3b13e Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 18:26:31 +0200 Subject: [PATCH 106/271] Update 'git for non-programmers' section --- CONTRIBUTING.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 79d08e22a..93b52c32b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,10 +25,10 @@ whether you're a programmer or not. ## Using git MineClone2 is developed using the version control system [git](https://git-scm.com/). If you want to contribute code to the project, it is **highly recommended** that you learn the git basics. -However, if you're not a programmer or don't plan to help with the coding part of the development, -it's still useful if you know it - in case you want to contribute files that are not related to code, -or to easily keep your game updated and test out pull requests. However, it's not required in this -case. +For non-programmers and people who do not plan to contribute code to Mineclone2, git is not required. +However, git is a tool that will be referenced frequently because of its usefulness. +As such, it is valuable in learning how git works and its terminology. It can also help you in +keeping your game updated, and easily testing pull requests. ## How you can help as a non-programmer From 27f35fe422c560bad9109e09460ff36a9f1f024a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 18:48:11 +0200 Subject: [PATCH 107/271] Add info about discord server in 'Let us know your opinion' section --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 93b52c32b..1e1b20778 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -67,7 +67,7 @@ If you own a server, a great way to help us improve MineClone2's code is by givi Minetest has a built in profiler. Simply set `profiler.load = true` in your configuration file and restart the server. After running the server for some time, just run `/profiler save` in chat - then you will find a file in the world directory containing the results. Open a new issue and upload the file. You can name the issue " profiler results". ### Let us know your opinion -It is always encouraged to actively contribute to issue discussions, let us know what you think about a topic and help us make decisions. +It is always encouraged to actively contribute to issue discussions on MeseHub, let us know what you think about a topic and help us make decisions. Also, note that a lot of discussion takes place on the Discord server, so it's definitely worth checking it out. ### Crediting If you opened or have contributed to an issue, you receive the `Community` role on our Discord (after asking for it). From d2242363889327ecc44ef1c1924f3f16160e2604 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 18:58:30 +0200 Subject: [PATCH 108/271] Consistency about line length (not a convention, just something applied to this file) --- CONTRIBUTING.md | 201 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 147 insertions(+), 54 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1e1b20778..7e914ac17 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,8 +4,10 @@ Wow, thank you! :-) But first, some things to note: -MineClone2's development target is to make a free software clone of Minecraft, -***version 1.17***, ***Java Edition***, ***+ Optifine features supported by the Minetest Engine***. The priority is making polished features up to version 1.12. +MineClone2's development target is to make a free software clone of +Minecraft, ***version 1.17***, ***Java Edition***, ***+ Optifine +features supported by the Minetest Engine***. The priority is making +polished features up to version 1.12. MineClone2 is maintained by Nicu and Fleckenstein. If you have any problems or questions, contact us (See Links section below). @@ -23,59 +25,116 @@ whether you're a programmer or not. * [Minetest forums](https://forum.minetest.net/viewtopic.php?f=50&t=16407) ## Using git -MineClone2 is developed using the version control system [git](https://git-scm.com/). If you want to -contribute code to the project, it is **highly recommended** that you learn the git basics. -For non-programmers and people who do not plan to contribute code to Mineclone2, git is not required. -However, git is a tool that will be referenced frequently because of its usefulness. -As such, it is valuable in learning how git works and its terminology. It can also help you in +MineClone2 is developed using the version control system +[git](https://git-scm.com/). If you want to contribute code to the +project, it is **highly recommended** that you learn the git basics. +For non-programmers and people who do not plan to contribute code to +Mineclone2, git is not required. However, git is a tool that will be +referenced frequently because of its usefulness. As such, it is valuable +in learning how git works and its terminology. It can also help you in keeping your game updated, and easily testing pull requests. ## How you can help as a non-programmer As someone who does not know how to write programs in Lua or does not -know how to use the Minetest API, you can still help us out a lot. -For example, by opening an issue in the [Issue tracker](https://git.minetest.land/MineClone2/MineClone2/issues), you can -report a bug or request a feature. +know how to use the Minetest API, you can still help us out a lot. For +example, by opening an issue in the +[Issue tracker](https://git.minetest.land/MineClone2/MineClone2/issues), +you can report a bug or request a feature. ### Rules about both bugs and feature requests -* Stay polite towards the developers and anyone else involved in the discussion. +* Stay polite towards the developers and anyone else involved in the +discussion. * Choose a descriptive title. -* Try to use proper English and please start the title with a capital letter. -* Always check the currently opened issues before creating a new one. Don't report bugs that have already been reported or request features that already have been requested. -* If you know about Minetest's inner workings, please think about whether the bug / the feature that you are reporting / requesting is actually an issue with Minetest itself, and if it is, head to the [Minetest issue tracker](https://github.com/minetest/minetest/issues) instead. -* If you need any help regarding creating a Mesehub account or opening an issue, feel free to ask on the Discord / Matrix server or the IRC channel. +* Try to use proper English and please start the title with a capital +letter. +* Always check the currently opened issues before creating a new one. +Don't report bugs that have already been reported or request features +that already have been requested. +* If you know about Minetest's inner workings, please think about +whether the bug / the feature that you are reporting / requesting is +actually an issue with Minetest itself, and if it is, head to the +[Minetest issue tracker](https://github.com/minetest/minetest/issues) +instead. +* If you need any help regarding creating a Mesehub account or opening +an issue, feel free to ask on the Discord / Matrix server or the IRC +channel. ### Reporting bugs -* A bug is an unintended behavior or, in the worst case, a crash. However, it is not a bug if you believe something is missing in the game. In this case, please read "Requesting features" -* If you report a crash, always include the error message. If you play in singleplayer, post a screenshot of the message that minetest showed when the crash happened (or copy the message into your issue). If you are a server admin, you can find error messages in the log file of the server. +* A bug is an unintended behavior or, in the worst case, a crash. +However, it is not a bug if you believe something is missing in the +game. In this case, please read "Requesting features" +* If you report a crash, always include the error message. If you play +in singleplayer, post a screenshot of the message that minetest showed +when the crash happened (or copy the message into your issue). If you +are a server admin, you can find error messages in the log file of the +server. * Tell us which MineClone2 and minetest versions you are using. -* It's always useful to tell us what you were doing to trigger the bug, e.g. before the crash happened or what causes the faulty behavior +* It's always useful to tell us what you were doing to trigger the bug, +e.g. before the crash happened or what causes the faulty behavior ### Requesting features -* Make sure the feature you request is Minecraft 1.17 Java Edition or Optifine behavior. -* Don't beg for something to be implemented. We are not going to rethink our development roadmap because someone sais "Pls pls make this I'm waiting for this so bad!!!11!". -* Check whether the feature has been implemented in a newer version of MineClone2, in case you are not using the latest one. +* Make sure the feature you request is Minecraft 1.17 Java Edition or +Optifine behavior. +* Don't beg for something to be implemented. We are not going to rethink +our development roadmap because someone sais "Pls pls make this I'm +waiting for this so bad!!!11!". +* Check whether the feature has been implemented in a newer version of +MineClone2, in case you are not using the latest one. ### Testing code -If you want to help us with speeding up MineClone2 development and making the game more stable, a great way to do that is by testing out new features from contributors. -For most new things that get into the game, a pull request is created. A pull request is essentially a programmer saying "Look, I modified the game, please apply my changes to the upstream version of the game". -However, every programmer makes mistakes sometimes, some of which are hard to spot. You can help by downloading this modified version of the game and trying it out - then you tell us whether the code works and does what it claims to do or whether you have encountered any issues. -You can find currently open pull requests here: . Note that pull requests that start with a `WIP:` are not done yet, and therefore might not work, so it's not very useful to try them out yet. +If you want to help us with speeding up MineClone2 development and +making the game more stable, a great way to do that is by testing out +new features from contributors. For most new things that get into the +game, a pull request is created. A pull request is essentially a +programmer saying "Look, I modified the game, please apply my changes +to the upstream version of the game". However, every programmer makes +mistakes sometimes, some of which are hard to spot. You can help by +downloading this modified version of the game and trying it out - then +you tell us whether the code works and does what it claims to do or +whether you have encountered any issues. You can find currently open +pull requests here: +. Note that pull +requests that start with a `WIP:` are not done yet, and therefore might +not work, so it's not very useful to try them out yet. ### Profiling -If you own a server, a great way to help us improve MineClone2's code is by giving us profiler results. Profiler results give us detailed information about the game's performance and let us know where the real troublespots are. This way we can make the game faster. -Minetest has a built in profiler. Simply set `profiler.load = true` in your configuration file and restart the server. After running the server for some time, just run `/profiler save` in chat - then you will find a file in the world directory containing the results. Open a new issue and upload the file. You can name the issue " profiler results". +If you own a server, a great way to help us improve MineClone2's code +is by giving us profiler results. Profiler results give us detailed +information about the game's performance and let us know where the real +troublespots are. This way we can make the game faster. Minetest has a +built in profiler. Simply set `profiler.load = true` in your +configuration file and restart the server. After running the server for +some time, just run `/profiler save` in chat - then you will find a file +in the world directory containing the results. Open a new issue and +upload the file. You can name the issue " profiler +results". ### Let us know your opinion -It is always encouraged to actively contribute to issue discussions on MeseHub, let us know what you think about a topic and help us make decisions. Also, note that a lot of discussion takes place on the Discord server, so it's definitely worth checking it out. +It is always encouraged to actively contribute to issue discussions on +MeseHub, let us know what you think about a topic and help us make +decisions. Also, note that a lot of discussion takes place on the +Discord server, so it's definitely worth checking it out. ### Crediting -If you opened or have contributed to an issue, you receive the `Community` role on our Discord (after asking for it). +If you opened or have contributed to an issue, you receive the +`Community` role on our Discord (after asking for it). ## How you can help as a programmer -(Almost) all the MineClone2 development is done using pull requests. If you feel like a problem needs to fixed or you want to make a new feature, you could start writing the code right away and notifying us when you're, but it it never hurts to discuss things first. If there is no issue on the topic, open one. If there is an issue, tell us that you'd like to take care of it, to avoid duplicate work. Note that we appreciate any effort, so even if you are a relatively new programmer, you can already contribute to the project - if you have problems or questions regarding git, Lua, or the Minetest API - or the MineClone2 codebase, feel free to ask them on our Discord. -By asking us to include your changes in this game, you agree that they fall under the terms of the GPLv3, which basically means they will become part of a free software. -If your code leads to bugs or crashes after being merged, it is your responsibility to fix them as soon as possible. +(Almost) all the MineClone2 development is done using pull requests. +If you feel like a problem needs to fixed or you want to make a new +feature, you could start writing the code right away and notifying us +when you're, but it it never hurts to discuss things first. If there is +no issue on the topic, open one. If there is an issue, tell us that +you'd like to take care of it, to avoid duplicate work. Note that we +appreciate any effort, so even if you are a relatively new programmer, +you can already contribute to the project - if you have problems or +questions regarding git, Lua, or the Minetest API - or the MineClone2 +codebase, feel free to ask them on our Discord. By asking us to include +your changes in this game, you agree that they fall under the terms of +the GPLv3, which basically means they will become part of a free +software. If your code leads to bugs or crashes after being merged, it +is your responsibility to fix them as soon as possible. ### The recommended workflow * Fork the repository (in case you have not already) @@ -87,49 +146,83 @@ If your code leads to bugs or crashes after being merged, it is your responsibil ### Git Guidelines * We use merge rather than rebase or squash merge * We don't use git submodules. -* Your commit names should be relatively descriptive, e.g. when saying "Fix #issueid", the commit message should also contain the title of the issue. +* Your commit names should be relatively descriptive, e.g. when saying +"Fix #issueid", the commit message should also contain the title of the +issue. ### Code Guidelines * Each mod must provide `mod.conf`. -* Each mod which add API functions should store functions inside a global table named like the mod. -* Public functions should not use self references but rather just access the table directly. +* Each mod which add API functions should store functions inside a +global table named like the mod. +* Public functions should not use self references but rather just access +the table directly. * Use modern Minetest API * Use tabs for indentation (rather than spaces) -* Even if it improves performance, it is discouraged to localize variables at the beggining of files, since if another mod overrides some of the functions / variables you localized, you will still have a reference to the old function. +* Even if it improves performance, it is discouraged to localize +variables at the beggining of files, since if another mod overrides some +of the functions / variables you localized, you will still have a +reference to the old function. ### Changes to Gameplay -Pull Requests that change gameplay have to be properly researched and need to state their sources. These PRs also need Fleckenstein's approval before they are merged. +Pull Requests that change gameplay have to be properly researched and +need to state their sources. These PRs also need Fleckenstein's approval +before they are merged. You can use these sources: -* Minecraft code (Name the source file and line, however DONT post any proprietary code). You can use MCP to decompile Minecraft. -* Testing things inside of Minecraft (Attach screenshots / video footage of the results) +* Minecraft code (Name the source file and line, however DONT post any +proprietary code). You can use MCP to decompile Minecraft. +* Testing things inside of Minecraft (Attach screenshots / video footage +of the results) * Official Minecraft Wiki (Include a link to the page) ### Developer status -Active and trusted contributors are often granted write access to the MineClone2 repository. However you should not push things directly to MineClone2 master - rather, do your work on a branch on your private repo, then create a pull request. This way other people can review your changes and make sure they work before they get merged. You are allowed to merge PRs if they have recieved the necessary feedback and have been tested to not lead to any crashes and do what they claim to do by at least two different people. -You may also be assigned to issues or pull requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can also unassign yourself from the issue / PR if you have no time or don't want to take care of it for some other reason (after all, everyone is a volunteer and we can't expect you to do work that you are not intrested in) - the important thing is really that you make sure to inform us if you won't take care of something that has been assigned to you. -Also, please assign yourself to something that you want to work on to avoid duplicate work. -As a developer, it should be easy to reach you about your code. You should be on the Discord (or, if you really don't like Discord, Matrix or IRC). +Active and trusted contributors are often granted write access to the +MineClone2 repository. However you should not push things directly to +MineClone2 master - rather, do your work on a branch on your private +repo, then create a pull request. This way other people can review your +changes and make sure they work before they get merged. You are allowed +to merge PRs if they have recieved the necessary feedback and have been +tested to not lead to any crashes and do what they claim to do by at +least two different people. You may also be assigned to issues or pull +requests as a developer. In this case it is your responsibility to fix +the issue / review and merge the pull request when it is ready. You can +also unassign yourself from the issue / PR if you have no time or don't +want to take care of it for some other reason (after all, everyone is a +volunteer and we can't expect you to do work that you are not intrested +in) - the important thing is really that you make sure to inform us if +you won't take care of something that has been assigned to you. Also, +please assign yourself to something that you want to work on to avoid +duplicate work. As a developer, it should be easy to reach you about +your code. You should be on the Discord (or, if you really don't like +Discord, Matrix or IRC). ### Maintainer status -Maintainers are responsible for making sure issues are addressed and pull requests are reviewed and merged, by assigning either themselves or Developers to issues / PRs. -Maintainers are responsible for making releases, making sure guidelines are kept and making project decisions based on what the community wants. -Maintainers grant/revoke developer access. +Maintainers are responsible for making sure issues are addressed and +pull requests are reviewed and merged, by assigning either themselves or +Developers to issues / PRs. Maintainers are responsible for making +releases, making sure guidelines are kept and making project decisions +based on what the community wants. Maintainers grant/revoke developer +access. Currently there are two maintainers with different +responsibility fields: -Currently there are two maintainers with different responsibility fields: - -* Fleckenstein - responsible for gameplay review, publishing releases, technical guidelines and issue/PR delegation +* Fleckenstein - responsible for gameplay review, publishing releases, +technical guidelines and issue/PR delegation * Nicu - responsible for community related issues #### Creating releases * Launch MineClone2 to make sure it still runs * Update the version number in README.md -* Use `git tag ` to tag the latest commit with the version number +* Use `git tag ` to tag the latest commit with the +version number * Push to repo (don't forget `--tags`!) -* Update ContentDB (https://content.minetest.net/packages/Wuzzy/mineclone2/) -* Update first post in forum thread (https://forum.minetest.net/viewtopic.php?f=50&t=16407) +* Update ContentDB +(https://content.minetest.net/packages/Wuzzy/mineclone2/) +* Update first post in forum thread +(https://forum.minetest.net/viewtopic.php?f=50&t=16407) * Post release announcement and changelog in forums ## Crediting -Contributors, Developers and Maintainers will be credited in `CREDITS.md`. If you make your first time contribution, please add yourself to this file. -There are also Discord roles for Contributors, Developers and Maintainers. +Contributors, Developers and Maintainers will be credited in +`CREDITS.md`. If you make your first time contribution, please add +yourself to this file. There are also Discord roles for Contributors, +Developers and Maintainers. From 74890101520d4b04578dbc333aab38ea6cdf6eca Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 25 Oct 2021 17:08:38 +0000 Subject: [PATCH 109/271] Use particlespawners instead of single particles --- mods/ITEMS/mcl_totems/init.lua | 37 +++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index 79b2c8de0..aa188855f 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -34,20 +34,29 @@ mcl_damage.register_modifier(function(obj, damage, reason) -- Effects minetest.sound_play({name = "mcl_totems_totem", gain = 1}, {pos=ppos, max_hear_distance = 16}, true) - for i = 1, 100 do - minetest.add_particle({ - pos = vector.offset(ppos, 0, math.random(-10, 10) / 10, 0), - velocity = vector.new(math.random(-15, 15) / 10, math.random(0, 15) / 10, math.random(-15, 15) / 10), - acceleration = vector.new(0, -math.random(1, 10) / 10, 0), - expirationtime = math.random(1, 3), - size = math.random(1, 2), - collisiondetection = true, - collision_removal = true, - object_collision = false, - texture = "mcl_particles_totem" .. math.random(1, 4) .. ".png^[colorize:#" .. particle_colors[math.random(#particle_colors)], - glow = 10, - }) - + for i = 1, 4 do + for c = 1, #particle_colors do + minetest.add_particlespawner({ + amount = math.round(100/(4 * #particle_colors)), + time = 1, + minpos = vector.offset(ppos, 0, -1, 0), + maxpos = vector.offset(ppos, 0, 1, 0), + minvel = vector.new(-1.5, 0, -1.5), + maxvel = vector.new(1.5, 1.5, 1.5), + minacc = vector.new(0, -0.1, 0), + maxacc = vector.new(0, -1, 0), + minexptime = 1, + maxexptime = 3, + minsize = 1, + maxsize = 2, + collisiondetection = true, + collision_removal = true, + object_collision = false, + vertical = false, + texture = "mcl_particles_totem" .. i .. ".png^[colorize:#" .. particle_colors[c], + glow = 10, + }) + end end -- Big totem overlay From a6def5e9bb7ddc3e70b13be51e4a53f1f33dcbba Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:14:53 +0200 Subject: [PATCH 110/271] Remove guideline about localizing variables --- CONTRIBUTING.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7e914ac17..722deefaf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -158,10 +158,6 @@ global table named like the mod. the table directly. * Use modern Minetest API * Use tabs for indentation (rather than spaces) -* Even if it improves performance, it is discouraged to localize -variables at the beggining of files, since if another mod overrides some -of the functions / variables you localized, you will still have a -reference to the old function. ### Changes to Gameplay Pull Requests that change gameplay have to be properly researched and From 6580bcab5a80644f940dbaf172b64979bbe5d6d5 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:15:26 +0200 Subject: [PATCH 111/271] Add info about Minestorm and add links for MCP and Minestorm --- CONTRIBUTING.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 722deefaf..f9d97c063 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -166,7 +166,10 @@ before they are merged. You can use these sources: * Minecraft code (Name the source file and line, however DONT post any -proprietary code). You can use MCP to decompile Minecraft. +proprietary code). You can use +[MCP](https://minecraft.fandom.com/wiki/Programs_and_editors/Mod_Coder_Pack) +to decompile Minecraft or look at +[Minestorm](https://github.com/Minestom/Minestom) code. * Testing things inside of Minecraft (Attach screenshots / video footage of the results) * Official Minecraft Wiki (Include a link to the page) From 362de4c920453f838349f43261f2cd9f46ba6951 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:16:24 +0200 Subject: [PATCH 112/271] Add minecraft wiki link --- CONTRIBUTING.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f9d97c063..3637bdf1c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -172,7 +172,8 @@ to decompile Minecraft or look at [Minestorm](https://github.com/Minestom/Minestom) code. * Testing things inside of Minecraft (Attach screenshots / video footage of the results) -* Official Minecraft Wiki (Include a link to the page) +* [Official Minecraft Wiki](https://minecraft.fandom.com/wiki/Minecraft_Wiki) +(Include a link to the specific page you used) ### Developer status Active and trusted contributors are often granted write access to the From 3a422e3afc91a9dded5f613770b776759a2f8376 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:25:48 +0200 Subject: [PATCH 113/271] Reword 'understandable English' rule --- CONTRIBUTING.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3637bdf1c..03a76ce57 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -46,8 +46,9 @@ you can report a bug or request a feature. * Stay polite towards the developers and anyone else involved in the discussion. * Choose a descriptive title. -* Try to use proper English and please start the title with a capital -letter. +* Please write in plain, understandable English. It will be easier to +communicate. +* Please start the issue title with a capital letter. * Always check the currently opened issues before creating a new one. Don't report bugs that have already been reported or request features that already have been requested. From 756d28e2c61300205731e0cd370329e2dbb3a708 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:31:07 +0200 Subject: [PATCH 114/271] Use iliekprogrammar's wording in the begging rule --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 03a76ce57..df3b5c059 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -77,9 +77,10 @@ e.g. before the crash happened or what causes the faulty behavior ### Requesting features * Make sure the feature you request is Minecraft 1.17 Java Edition or Optifine behavior. -* Don't beg for something to be implemented. We are not going to rethink -our development roadmap because someone sais "Pls pls make this I'm -waiting for this so bad!!!11!". +* Begging or excessive attention seeking does not help us in the +slightest, and may very well disrupt Mineclone2 development. It's better +to put that energy into helping or researching the feature in question. +After all, we're just volunteers working on our spare time. * Check whether the feature has been implemented in a newer version of MineClone2, in case you are not using the latest one. From 7707c3132c4da6c6f5db246d802c589610ab100d Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:46:13 +0200 Subject: [PATCH 115/271] Fix duplicate and forgotten word in 'helping as a programmer' section --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index df3b5c059..9b209d912 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -126,8 +126,8 @@ If you opened or have contributed to an issue, you receive the (Almost) all the MineClone2 development is done using pull requests. If you feel like a problem needs to fixed or you want to make a new feature, you could start writing the code right away and notifying us -when you're, but it it never hurts to discuss things first. If there is -no issue on the topic, open one. If there is an issue, tell us that +when you're done, but it never hurts to discuss things first. If there +is no issue on the topic, open one. If there is an issue, tell us that you'd like to take care of it, to avoid duplicate work. Note that we appreciate any effort, so even if you are a relatively new programmer, you can already contribute to the project - if you have problems or From c9987884358cff0548af0d017b5d073274aaa00a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:48:14 +0200 Subject: [PATCH 116/271] Reword 'help for junior devs' section --- CONTRIBUTING.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9b209d912..cd7f9c465 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -128,15 +128,17 @@ If you feel like a problem needs to fixed or you want to make a new feature, you could start writing the code right away and notifying us when you're done, but it never hurts to discuss things first. If there is no issue on the topic, open one. If there is an issue, tell us that -you'd like to take care of it, to avoid duplicate work. Note that we -appreciate any effort, so even if you are a relatively new programmer, -you can already contribute to the project - if you have problems or -questions regarding git, Lua, or the Minetest API - or the MineClone2 -codebase, feel free to ask them on our Discord. By asking us to include -your changes in this game, you agree that they fall under the terms of -the GPLv3, which basically means they will become part of a free -software. If your code leads to bugs or crashes after being merged, it -is your responsibility to fix them as soon as possible. +you'd like to take care of it, to avoid duplicate work. We appreciate +any contributing effort to Mineclone2. If you are a relatively new +programmer, you can reach us on Discord, Matrix or IRC for questions +about git, Lua, Minetest API, Mineclone2 codebase or anything related +to MineClone2. We can help you avoid writing code that would be deemed +inadequeate, or help you become familiar with Mineclone2 better, or even +help using development tools. By asking us to include your changes in +this game, you agree that they fall under the terms of the GPLv3, which +basically means they will become part of a free software. If your code +leads to bugs or crashes after being merged, it is your responsibility +to fix them as soon as possible. ### The recommended workflow * Fork the repository (in case you have not already) From 5edf27ac88cbbbd249e781f0ca623b1f3696733f Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:54:10 +0200 Subject: [PATCH 117/271] Reword 'bug responsibility' section --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cd7f9c465..66a1a3452 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -136,9 +136,10 @@ to MineClone2. We can help you avoid writing code that would be deemed inadequeate, or help you become familiar with Mineclone2 better, or even help using development tools. By asking us to include your changes in this game, you agree that they fall under the terms of the GPLv3, which -basically means they will become part of a free software. If your code -leads to bugs or crashes after being merged, it is your responsibility -to fix them as soon as possible. +basically means they will become part of a free software. Sometimes, +your code may cause crashes or bugs - we try to avoid such scenarios by +testing everytime before merging it, but if your merged work causes +problems, we ask you fix the issues as soon as possible. ### The recommended workflow * Fork the repository (in case you have not already) From 7f43ba6e36f857374803025664f0855dc7abceac Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 19:56:03 +0200 Subject: [PATCH 118/271] Clarify rule about merging upstream --- CONTRIBUTING.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 66a1a3452..ec0974e63 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -145,7 +145,9 @@ problems, we ask you fix the issues as soon as possible. * Fork the repository (in case you have not already) * Do your change in a new branch * Create a pull request to get your changes merged into master -* Keep your pull request up to date by regulary merging upstream +* Keep your pull request up to date by regulary merging upstream. It is +imperative that conflicts are resolved prior to merging the pull +request. * After the pull request got merged, you can delete the branch ### Git Guidelines From a877c615a5723e3a83bb5b42b90dd9f1938d67be Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:01:12 +0200 Subject: [PATCH 119/271] Clarify tabs usage: Use spaces for alignment --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ec0974e63..dfe2d9265 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -164,7 +164,7 @@ global table named like the mod. * Public functions should not use self references but rather just access the table directly. * Use modern Minetest API -* Use tabs for indentation (rather than spaces) +* Tabs should be used for indent, spaces for alignment ### Changes to Gameplay Pull Requests that change gameplay have to be properly researched and From 6e7827902cb9f5951550139cdb7d32c350aa7f1c Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:04:08 +0200 Subject: [PATCH 120/271] Use the wording 'reproduce a problem' in the reporting bugs section --- CONTRIBUTING.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dfe2d9265..3d29321c7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -71,8 +71,9 @@ when the crash happened (or copy the message into your issue). If you are a server admin, you can find error messages in the log file of the server. * Tell us which MineClone2 and minetest versions you are using. -* It's always useful to tell us what you were doing to trigger the bug, -e.g. before the crash happened or what causes the faulty behavior +* Tell us how to reproduce the problem: What you were doing to trigger +the bug, e.g. before the crash happened or what causes the faulty +behavior. ### Requesting features * Make sure the feature you request is Minecraft 1.17 Java Edition or From fba30eccd67e54852d98c320732c8add0a6acb2b Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:04:51 +0200 Subject: [PATCH 121/271] Add rule about double quotes for strings --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3d29321c7..c829fa3f3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -166,6 +166,7 @@ global table named like the mod. the table directly. * Use modern Minetest API * Tabs should be used for indent, spaces for alignment +* Use double quotes for strings ### Changes to Gameplay Pull Requests that change gameplay have to be properly researched and From 47fbb0c176b849a14cc7f62d9a026303f73d5d37 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:18:03 +0200 Subject: [PATCH 122/271] Mod naming convention, snake case convention --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c829fa3f3..3495d4ad3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -160,6 +160,7 @@ issue. ### Code Guidelines * Each mod must provide `mod.conf`. +* Mod names are snake case, and newly added mods start with `mcl_` * Each mod which add API functions should store functions inside a global table named like the mod. * Public functions should not use self references but rather just access @@ -167,6 +168,7 @@ the table directly. * Use modern Minetest API * Tabs should be used for indent, spaces for alignment * Use double quotes for strings +* Use snake_case rather than CamelCase ### Changes to Gameplay Pull Requests that change gameplay have to be properly researched and From a80438d58e7aec6bfb817578633099226138ffd4 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:21:45 +0200 Subject: [PATCH 123/271] Advice about atomic commits --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3495d4ad3..926fab212 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -157,6 +157,7 @@ request. * Your commit names should be relatively descriptive, e.g. when saying "Fix #issueid", the commit message should also contain the title of the issue. +* Try to keep your commits as atomic as possible ### Code Guidelines * Each mod must provide `mod.conf`. From 64660617964c6a51fa5a7237446e7ebeab8ef8db Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:33:45 +0200 Subject: [PATCH 124/271] Add back function declaration guideline, provide examples for code style guidelines --- CONTRIBUTING.md | 79 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 71 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 926fab212..827497799 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -161,15 +161,78 @@ issue. ### Code Guidelines * Each mod must provide `mod.conf`. -* Mod names are snake case, and newly added mods start with `mcl_` -* Each mod which add API functions should store functions inside a -global table named like the mod. +* Mod names are snake case, and newly added mods start with `mcl_`, e.g. +`mcl_core`, `mcl_farming`, `mcl_monster_eggs` +* To export functions, store them inside a global table named like the +mod, e.g. + +```lua +mcl_example = {} + +function mcl_example.do_something() + -- ... +end + +``` + * Public functions should not use self references but rather just access -the table directly. -* Use modern Minetest API -* Tabs should be used for indent, spaces for alignment -* Use double quotes for strings -* Use snake_case rather than CamelCase +the table directly, e.g. + +```lua +-- bad +function mcl_example:do_something() +end + +-- good +function mcl_example.do_something() +end +``` + +* Use modern Minetest API, e.g. no usage of `minetest.env` +* Tabs should be used for indent, spaces for alignment, e.g. + +```lua + +-- use tabs for indent + +for i = 1, 10 do + if i % 3 == 0 then + print(i) + end +end + +-- use tabs for indent and spaces to align things + +some_table = { + {"a string", 5}, + {"a very much longer string", 10}, +} +``` + +* Use double quotes for strings, e.g. `"asdf"` rather than `'asdf'` +* Use snake_case rather than CamelCase, e.g. `my_function` rather than +`MyFunction` +* Dont declare functions as an assignment, e.g. + +```lua +-- bad +local some_local_func = function() + -- ... +end + +my_mod.some_func = function() + -- ... +end + +-- good +local function some_local_func() + -- ... +end + +function my_mod.some_func() + -- ... +end +``` ### Changes to Gameplay Pull Requests that change gameplay have to be properly researched and From da5e703675429381932b8d8fb9c863ccd3d16f96 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:36:29 +0200 Subject: [PATCH 125/271] Clarify that 'make atomic commits' is just an advise --- CONTRIBUTING.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 827497799..1f2d1d0de 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -157,7 +157,8 @@ request. * Your commit names should be relatively descriptive, e.g. when saying "Fix #issueid", the commit message should also contain the title of the issue. -* Try to keep your commits as atomic as possible +* Try to keep your commits as atomic as possible (advise, but completely +optional) ### Code Guidelines * Each mod must provide `mod.conf`. From f3d16d264cb46f1659b85795a75c1b762be4b615 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 20:41:09 +0200 Subject: [PATCH 126/271] Add notice about Minetest not supporting capital letters in modnames --- CONTRIBUTING.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1f2d1d0de..9c235880d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -163,7 +163,8 @@ optional) ### Code Guidelines * Each mod must provide `mod.conf`. * Mod names are snake case, and newly added mods start with `mcl_`, e.g. -`mcl_core`, `mcl_farming`, `mcl_monster_eggs` +`mcl_core`, `mcl_farming`, `mcl_monster_eggs`. Keep in mind Minetest +does not support capital letters in mod names. * To export functions, store them inside a global table named like the mod, e.g. From eccba76732bff067bf677bee46acfc51e1298234 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 25 Oct 2021 20:25:34 +0000 Subject: [PATCH 127/271] Use math.floor instead of math.round --- mods/ITEMS/mcl_totems/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index aa188855f..b11e68df7 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -37,7 +37,7 @@ mcl_damage.register_modifier(function(obj, damage, reason) for i = 1, 4 do for c = 1, #particle_colors do minetest.add_particlespawner({ - amount = math.round(100/(4 * #particle_colors)), + amount = math.floor(100 / (4 * #particle_colors)), time = 1, minpos = vector.offset(ppos, 0, -1, 0), maxpos = vector.offset(ppos, 0, 1, 0), From 30f7c638f377f7a2387974736ccd6ac171e5b0a6 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 22:55:48 +0200 Subject: [PATCH 128/271] mcl_enchanting: Add spanish translations and update template Credit to: todoporlalibertad Reviewed by j45 --- .../locale/mcl_enchanting.es.tr | 123 +++++++++++ mods/ITEMS/mcl_enchanting/locale/template.txt | 205 ++++++++++-------- 2 files changed, 240 insertions(+), 88 deletions(-) create mode 100644 mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.es.tr diff --git a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.es.tr b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.es.tr new file mode 100644 index 000000000..a977e8fe6 --- /dev/null +++ b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.es.tr @@ -0,0 +1,123 @@ +# textdomain: mcl_enchanting + + +### enchantments.lua ### + +Arrows passes through multiple objects.=Las flechas atraviesan multiples enemigos. +Arrows set target on fire.=Las flechas prenderan los enemigos. +Bane of Arthropods=Perdición de los Artrópodos +Channeling=Conductividad + +Channels a bolt of lightning toward a target. Works only during thunderstorms and if target is unobstructed with opaque blocks.=Canaliza los rayos de una tormenta hacia el enemigo. + +Curse of Vanishing=Maldición de Desaparición +Decreases crossbow charging time.=Disminuye el tiempo de carga de las ballestas. +Decreases time until rod catches something.=Disminuye el tiempo que tardan en picar los cebos en la pesca. +Depth Strider=Agilidad acuática +Efficiency=Eficiencia +Extends underwater breathing time.=Aumenta el tiempo de mantener la respiración. +Fire Aspect=Aspecto Ígneo +Flame=Fuego +Fortune=Fortuna +Frost Walker=Paso Helado +Impaling=Empalamiento +Increases arrow damage.=Incrementa el daño de las flechas. +Increases arrow knockback.=Incrementa el empuje de las flechas. +Increases certain block drops.=Incrementa la cantidad de objetos que sueltan los bloques. + +Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).=Incrementa el daño y ralentiza a los artrópodos. (arañas, lepismas, endermitas, etc) + +Increases damage to undead mobs.=Incrementa el daño contra no-muertos. +Increases damage.=Incrementa el daño. +Increases item durability.=Incrementa la durabilidad de una herramienta. +Increases knockback.=Incrementa el empuje. +Increases mining speed.=Incrementa la velocidad de picado. +Increases mob loot.=Incrementa el botín de los enemigos. +Increases rate of good loot (enchanting books, etc.)=Incrementa la probabilidad de encontrar tesoros. +Increases sweeping attack damage.=Incrementa el daño de efecto area. +Increases underwater movement speed.=Incrementa la velocidad de nado bajo el agua. +Increases walking speed on soul sand.=Incrementa la velocidad al caminar sobre arena de Almas. +Infinity=Infinidad +Item destroyed on death.=El objeto se destruye tras tu muerte. +Knockback=Empuje +Looting=Botín +Loyalty=Lealtad +Luck of the Sea=Suerte Marina +Lure=Atracción +Mending=Reparación +Mined blocks drop themselves.=Los bloques se minarán enteros. +Multishot=Multidisparo +Piercing=Perforación +Power=Poder +Punch=Retroceso +Quick Charge=Carga Rápida +Repair the item while gaining XP orbs.=Repara los objetos portados al recibir orbes de experiencia. +Respiration=Respiración +Riptide=Propulsión acuática +Sets target on fire.=Incencia al enemigo. +Sharpness=Filo +Shoot 3 arrows at the cost of one.=Dispara 3 flechas al precio de una. +Shooting consumes no regular arrows.=No se consumiran las flechas lanzadas. +Silk Touch=Toque de Seda +Smite=Golpeo +Soul Speed=Velocidad de Almas +Sweeping Edge=Filo Arrasador +Trident deals additional damage to ocean mobs.=Incrementa el daño del tridente sobre criaturas acuáticas. + +Trident launches player with itself when thrown. Works only in water or rain.=El tridente impulsa al portador dentro del agua o bajo la lluvia. + +Trident returns after being thrown. Higher levels reduce return time.=El tridente regresa al portador tras lanzarlo. + +Turns water beneath the player into frosted ice and prevents the damage from magma blocks.=Congela el agua bajo tus pies y evita el daño de los bloques de magma. + +Unbreaking=Irrompibilidad + +### engine.lua ### + +@1 Enchantment Levels=Nivel de encantamiento: @1 +@1 Lapis Lazuli=@1 Lapis Lázuli +Inventory=Inventario +Level requirement: @1=Nivel requerido: @1 + +### init.lua ### + +'@1' is not a valid number='@1' no es un número válido +'@1' is not a valid number.='@1' no es un número válido + []= [] +@1 can't be combined with @2.=@1 no se puede combinar con @2 + +After finally selecting your enchantment; left-click on the selection, and you will see both the lapis lazuli and your experience levels consumed. And, an enchanted item left in its place.=Despues elige tu encantamiento, los niveles de experiencia y el lapis lázuli seran consumidos y el encantamiento aplicado al objeto. + +After placing your items in the slots, the enchanting options will be shown. Hover over the options to read what is available to you.=Coloca el objeto en su ranura yse mostraran los encantamientos a elegir. + +Enchant=Encantamiento +Enchant an item=Encantar objeto +Enchanted Book=Libro Encantado +Enchanting Table=Mesa de Encantamientos + +Enchanting Tables will let you enchant armors, tools, weapons, and books with various abilities. But, at the cost of some experience, and lapis lazuli.=La mesa de Encantamientos dara a tus herramientas, armas o armadura algunas habilidades magicas. Pero a coste de algo de experiencia y lapis lázuli. + +Enchanting succeded.=Encantado correctamente. +Forcefully enchant an item=Encantar objeto a la fuerza. + +Place a tool, armor, weapon or book into the top left slot, and then place 1-3 Lapis Lazuli in the slot to the right.=Coloca una herramienta, arma, armadura o libro sobre la ranura izquierda, coloca de 1 a 3 Lapis lázulis en la ranura derecha. + +Player '@1' cannot be found.=Jugador @1 no encontrado. +Rightclick the Enchanting Table to open the enchanting menu.=Clic derecho sobre la mesa de encantamientos para abrir la interfaz. +Spend experience, and lapis to enchant various items.=Experiencia y Lapis para encantar varios objetos. + +The number you have entered (@1) is too big, it must be at most @2.=@1 es muy grande, debe ser menor que @2 + +The number you have entered (@1) is too small, it must be at least @2.=@1 es muy pequeño, debe ser mayor a @2 + +The selected enchantment can't be added to the target item.=El encantamiento seleccionado no puede añadirse a ese objeto. +The target doesn't hold an item.=El jugador no sujeta un objeto. +The target item is not enchantable.=El objeto del jugador no se puede encantar. +There is no such enchantment '@1'.=@1 no es un encantamiento. + +These options are randomized, and dependent on experience level; but the enchantment strength can be increased.=Las opciones seran aleatorias dependiendo del nivel de experiencia, los niveles de encantamiento pueden ser aumentados. + +To increase the enchantment strength, place bookshelves around the enchanting table. However, you will need to keep 1 air node between the table, & the bookshelves to empower the enchanting table.=Para aumentar los niveles de encantamientos, coloca librerias alrededor y cerca de la mesa de encantamientos. + +Usage: /enchant []=Usa: /enchant [] +Usage: /forceenchant []=Usa /forceenchant [] diff --git a/mods/ITEMS/mcl_enchanting/locale/template.txt b/mods/ITEMS/mcl_enchanting/locale/template.txt index 08fa82097..1f540d6d3 100644 --- a/mods/ITEMS/mcl_enchanting/locale/template.txt +++ b/mods/ITEMS/mcl_enchanting/locale/template.txt @@ -1,100 +1,129 @@ # textdomain: mcl_enchanting -Aqua Affinity= -Increases underwater mining speed.= -Bane of Arthropods= -Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).= -Blast Protection= -Reduces explosion damage and knockback.= -Channeling= -Channels a bolt of lightning toward a target. Works only during thunderstorms and if target is unobstructed with opaque blocks.= -Curse of Binding= -Item cannot be removed from armor slots except due to death, breaking or in Creative Mode.= -Curse of Vanishing= -Item destroyed on death.= -Depth Strider= -Increases underwater movement speed.= -Efficiency= -Increases mining speed.= -Feather Falling= -Reduces fall damage.= -Fire Aspect= -Sets target on fire.= -Fire Protection= -Reduces fire damage.= -Flame= -Arrows set target on fire.= -Fortune= -Increases certain block drops.= -Frost Walker= -Turns water beneath the player into frosted ice and prevents the damage from magma blocks.= -Impaling= -Trident deals additional damage to ocean mobs.= -Infinity= -Shooting consumes no regular arrows.= -Knockback= -Increases knockback.= -Looting= -Increases mob loot.= -Loyalty= -Trident returns after being thrown. Higher levels reduce return time.= -Luck of the Sea= -Increases rate of good loot (enchanting books, etc.)= -Lure= -Decreases time until rod catches something.= -Mending= -Repair the item while gaining XP orbs.= -Multishot= -Shoot 3 arrows at the cost of one.= -Piercing= + + +### enchantments.lua ### + Arrows passes through multiple objects.= -Power= -Increases arrow damage.= -Projectile Protection= -Reduces projectile damage.= -Protection= -Reduces most types of damage by 4% for each level.= -Punch= -Increases arrow knockback.= -Quick Charge= +Arrows set target on fire.= +Bane of Arthropods= +Channeling= + +Channels a bolt of lightning toward a target. Works only during thunderstorms and if target is unobstructed with opaque blocks.= + +Curse of Vanishing= Decreases crossbow charging time.= -Respiration= +Decreases time until rod catches something.= +Depth Strider= +Efficiency= Extends underwater breathing time.= -Riptide= -Trident launches player with itself when thrown. Works only in water or rain.= -Sharpness= -Increases damage.= -Silk Touch= -Mined blocks drop themselves.= -Smite= +Fire Aspect= +Flame= +Fortune= +Frost Walker= +Impaling= +Increases arrow damage.= +Increases arrow knockback.= +Increases certain block drops.= + +Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).= + Increases damage to undead mobs.= -Soul Speed= -Increases walking speed on soul sand.= -Sweeping Edge= -Increases sweeping attack damage.= -Thorns= -Reflects some of the damage taken when hit, at the cost of reducing durability with each proc.= -Unbreaking= +Increases damage.= Increases item durability.= -Inventory= -@1 Lapis Lazuli= +Increases knockback.= +Increases mining speed.= +Increases mob loot.= +Increases rate of good loot (enchanting books, etc.)= +Increases sweeping attack damage.= +Increases underwater movement speed.= +Increases walking speed on soul sand.= +Infinity= +Item destroyed on death.= +Knockback= +Looting= +Loyalty= +Luck of the Sea= +Lure= +Mending= +Mined blocks drop themselves.= +Multishot= +Piercing= +Power= +Punch= +Quick Charge= +Repair the item while gaining XP orbs.= +Respiration= +Riptide= +Sets target on fire.= +Sharpness= +Shoot 3 arrows at the cost of one.= +Shooting consumes no regular arrows.= +Silk Touch= +Smite= +Soul Speed= +Sweeping Edge= +Trident deals additional damage to ocean mobs.= + +Trident launches player with itself when thrown. Works only in water or rain.= + +Trident returns after being thrown. Higher levels reduce return time.= + +Turns water beneath the player into frosted ice and prevents the damage from magma blocks.= + +Unbreaking= + +### engine.lua ### + @1 Enchantment Levels= +@1 Lapis Lazuli= +Inventory= Level requirement: @1= -Enchant an item= - []= -Usage: /enchant []= -Player '@1' cannot be found.= -There is no such enchantment '@1'.= -The target doesn't hold an item.= -The selected enchantment can't be added to the target item.= + +### init.lua ### + '@1' is not a valid number= -The number you have entered (@1) is too big, it must be at most @2.= -The number you have entered (@1) is too small, it must be at least @2.= -@1 can't be combined with @2.= -Enchanting succeded.= -Forcefully enchant an item= -Usage: /forceenchant []= -The target item is not enchantable.= '@1' is not a valid number.= + []= +@1 can't be combined with @2.= + +After finally selecting your enchantment; left-click on the selection, and you will see both the lapis lazuli and your experience levels consumed. And, an enchanted item left in its place.= + +After placing your items in the slots, the enchanting options will be shown. Hover over the options to read what is available to you.= + +Enchant= +Enchant an item= Enchanted Book= Enchanting Table= -Enchant= + +Enchanting Tables will let you enchant armors, tools, weapons, and books with various abilities. But, at the cost of some experience, and lapis lazuli.= + +Enchanting succeded.= +Forcefully enchant an item= + +Place a tool, armor, weapon or book into the top left slot, and then place 1-3 Lapis Lazuli in the slot to the right.= + +Player '@1' cannot be found.= +Rightclick the Enchanting Table to open the enchanting menu.= +Spend experience, and lapis to enchant various items.= + +The number you have entered (@1) is too big, it must be at most @2.= + +The number you have entered (@1) is too small, it must be at least @2.= + +The selected enchantment can't be added to the target item.= +The target doesn't hold an item.= +The target item is not enchantable.= +There is no such enchantment '@1'.= + +These options are randomized, and dependent on experience level; but the enchantment strength can be increased.= + +To increase the enchantment strength, place bookshelves around the enchanting table. However, you will need to keep 1 air node between the table, & the bookshelves to empower the enchanting table.= + +Usage: /enchant []= +Usage: /forceenchant []= + + +##### not used anymore ##### + +# textdomain: mcl_enchanting +Aqua Affinity= From 0369465630508956cb75d1c2c055e71a67b74b73 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 25 Oct 2021 22:59:21 +0200 Subject: [PATCH 129/271] Add todoporlalibertad to translation credits --- CREDITS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.md b/CREDITS.md index 296e7c23b..de3dcae61 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -110,6 +110,7 @@ * wuniversales * kay27 * pitchum +* todoporlalibertad ## Special thanks * celeron55 for creating Minetest From 4e8e6fbb51a6a110619dbe0f2d6acccbc87dfa60 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 11:42:33 +0200 Subject: [PATCH 130/271] Update development target section --- CONTRIBUTING.md | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9c235880d..6cdd0db6e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,10 +4,22 @@ Wow, thank you! :-) But first, some things to note: -MineClone2's development target is to make a free software clone of -Minecraft, ***version 1.17***, ***Java Edition***, ***+ Optifine -features supported by the Minetest Engine***. The priority is making -polished features up to version 1.12. +MineClone2's development target is to... + +- Crucially, create a stable, moddable, free/libre clone of Minecraft +based on the Minetest engine with polished features, usable in both +singleplayer and multiplayer. Currently, most of **Minecraft Java +Edition 1.12.2** features are already implemented and polishing existing +features are prioritised over new feature requests. +- With lessened priority yet strictly, implement features targetting +**Minecraft version 1.17 + Optifine** (Optifine only as far as supported +by the Minetest Engine). This means features in parity with the listed +Minecraft experiences are prioritised over those that don't fulfill this +scope. +- Optionally, create a performant experience that will run relatively +well on really low spec computers. Unfortunately, due to Minecraft's +mechanisms and Minetest engine's limitations along with a very small +playerbase on low spec computers, optimizations are hard to investigate. MineClone2 is maintained by Nicu and Fleckenstein. If you have any problems or questions, contact us (See Links section below). @@ -298,7 +310,7 @@ version number (https://forum.minetest.net/viewtopic.php?f=50&t=16407) * Post release announcement and changelog in forums -## Crediting +### Crediting Contributors, Developers and Maintainers will be credited in `CREDITS.md`. If you make your first time contribution, please add yourself to this file. There are also Discord roles for Contributors, From e341b2a6fe22c879abb66353a7539fd32320bb27 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 11:55:08 +0200 Subject: [PATCH 131/271] Split code contributor section --- CONTRIBUTING.md | 81 ++++++++++++++++++++++++++++--------------------- 1 file changed, 46 insertions(+), 35 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6cdd0db6e..6c5aa2cd1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -137,24 +137,8 @@ If you opened or have contributed to an issue, you receive the ## How you can help as a programmer (Almost) all the MineClone2 development is done using pull requests. -If you feel like a problem needs to fixed or you want to make a new -feature, you could start writing the code right away and notifying us -when you're done, but it never hurts to discuss things first. If there -is no issue on the topic, open one. If there is an issue, tell us that -you'd like to take care of it, to avoid duplicate work. We appreciate -any contributing effort to Mineclone2. If you are a relatively new -programmer, you can reach us on Discord, Matrix or IRC for questions -about git, Lua, Minetest API, Mineclone2 codebase or anything related -to MineClone2. We can help you avoid writing code that would be deemed -inadequeate, or help you become familiar with Mineclone2 better, or even -help using development tools. By asking us to include your changes in -this game, you agree that they fall under the terms of the GPLv3, which -basically means they will become part of a free software. Sometimes, -your code may cause crashes or bugs - we try to avoid such scenarios by -testing everytime before merging it, but if your merged work causes -problems, we ask you fix the issues as soon as possible. -### The recommended workflow +### Recommended workflow * Fork the repository (in case you have not already) * Do your change in a new branch * Create a pull request to get your changes merged into master @@ -163,7 +147,45 @@ imperative that conflicts are resolved prior to merging the pull request. * After the pull request got merged, you can delete the branch -### Git Guidelines +### Discuss first +If you feel like a problem needs to fixed or you want to make a new +feature, you could start writing the code right away and notifying us +when you're done, but it never hurts to discuss things first. If there +is no issue on the topic, open one. If there is an issue, tell us that +you'd like to take care of it, to avoid duplicate work. + +### Don't hesitate to ask for help +We appreciate any contributing effort to MineClone2. If you are a +relatively new programmer, you can reach us on Discord, Matrix or IRC +for questions about git, Lua, Minetest API, MineClone2 codebase or +anything related to MineClone2. We can help you avoid writing code that +would be deemed inadequeate, or help you become familiar with MineClone2 +better, or even help using development tools. + +### Maintain your own code, even if alreay got merged +Sometimes, your code may cause crashes or bugs - we try to avoid such +scenarios by testing everytime before merging it, but if your merged +work causes problems, we ask you fix the issues as soon as possible. + +### Changing Gameplay +Pull Requests that change gameplay have to be properly researched and +need to state their sources. These PRs also need Fleckenstein's approval +before they are merged. +You can use these sources: + +* Minecraft code (Name the source file and line, however DONT post any +proprietary code). You can use +[MCP](https://minecraft.fandom.com/wiki/Programs_and_editors/Mod_Coder_Pack) +to decompile Minecraft or look at +[Minestorm](https://github.com/Minestom/Minestom) code. +* Testing things inside of Minecraft (Attach screenshots / video footage +of the results) +* [Official Minecraft Wiki](https://minecraft.fandom.com/wiki/Minecraft_Wiki) +(Include a link to the specific page you used) + +### Keep our guidelines + +#### Git Guidelines * We use merge rather than rebase or squash merge * We don't use git submodules. * Your commit names should be relatively descriptive, e.g. when saying @@ -172,7 +194,7 @@ issue. * Try to keep your commits as atomic as possible (advise, but completely optional) -### Code Guidelines +#### Code Guidelines * Each mod must provide `mod.conf`. * Mod names are snake case, and newly added mods start with `mcl_`, e.g. `mcl_core`, `mcl_farming`, `mcl_monster_eggs`. Keep in mind Minetest @@ -226,7 +248,7 @@ some_table = { * Use double quotes for strings, e.g. `"asdf"` rather than `'asdf'` * Use snake_case rather than CamelCase, e.g. `my_function` rather than `MyFunction` -* Dont declare functions as an assignment, e.g. +* Don't declare functions as an assignment, e.g. ```lua -- bad @@ -248,21 +270,10 @@ function my_mod.some_func() end ``` -### Changes to Gameplay -Pull Requests that change gameplay have to be properly researched and -need to state their sources. These PRs also need Fleckenstein's approval -before they are merged. -You can use these sources: - -* Minecraft code (Name the source file and line, however DONT post any -proprietary code). You can use -[MCP](https://minecraft.fandom.com/wiki/Programs_and_editors/Mod_Coder_Pack) -to decompile Minecraft or look at -[Minestorm](https://github.com/Minestom/Minestom) code. -* Testing things inside of Minecraft (Attach screenshots / video footage -of the results) -* [Official Minecraft Wiki](https://minecraft.fandom.com/wiki/Minecraft_Wiki) -(Include a link to the specific page you used) +### Licensing +By asking us to include your changes in +this game, you agree that they fall under the terms of the GPLv3, which +basically means they will become part of a free software. ### Developer status Active and trusted contributors are often granted write access to the From a0789e72f04ee7c5bbc03c1fcf68e082eceac980 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 11:57:17 +0200 Subject: [PATCH 132/271] Move licensing down, just before crediting --- CONTRIBUTING.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6c5aa2cd1..f7e21d481 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -270,11 +270,6 @@ function my_mod.some_func() end ``` -### Licensing -By asking us to include your changes in -this game, you agree that they fall under the terms of the GPLv3, which -basically means they will become part of a free software. - ### Developer status Active and trusted contributors are often granted write access to the MineClone2 repository. However you should not push things directly to @@ -321,6 +316,11 @@ version number (https://forum.minetest.net/viewtopic.php?f=50&t=16407) * Post release announcement and changelog in forums +### Licensing +By asking us to include your changes in +this game, you agree that they fall under the terms of the GPLv3, which +basically means they will become part of a free software. + ### Crediting Contributors, Developers and Maintainers will be credited in `CREDITS.md`. If you make your first time contribution, please add From 70425e9f30611ab7dcbbbf5518ed113fdf1e1809 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 11:59:32 +0200 Subject: [PATCH 133/271] Split profiling section --- CONTRIBUTING.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f7e21d481..1f063a062 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -117,11 +117,13 @@ not work, so it's not very useful to try them out yet. If you own a server, a great way to help us improve MineClone2's code is by giving us profiler results. Profiler results give us detailed information about the game's performance and let us know where the real -troublespots are. This way we can make the game faster. Minetest has a -built in profiler. Simply set `profiler.load = true` in your -configuration file and restart the server. After running the server for -some time, just run `/profiler save` in chat - then you will find a file -in the world directory containing the results. Open a new issue and +troublespots are. This way we can make the game faster. + +#### Using Minetest's profiler +Minetest has a built in profiler. Simply set `profiler.load = true` in +your configuration file and restart the server. After running the server +for some time, just run `/profiler save` in chat - then you will find a +file in the world directory containing the results. Open a new issue and upload the file. You can name the issue " profiler results". From ea0f52763c2b183368b8a0f4690c34d060bdafac Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 12:04:16 +0200 Subject: [PATCH 134/271] Split developer responsibilities into a list --- CONTRIBUTING.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1f063a062..58762bfcb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -274,22 +274,27 @@ end ### Developer status Active and trusted contributors are often granted write access to the -MineClone2 repository. However you should not push things directly to +MineClone2 repository. + +#### Developer responsibilities +- You should not push things directly to MineClone2 master - rather, do your work on a branch on your private repo, then create a pull request. This way other people can review your -changes and make sure they work before they get merged. You are allowed -to merge PRs if they have recieved the necessary feedback and have been +changes and make sure they work before they get merged. +- Merge PRs if they have recieved the necessary feedback and have been tested to not lead to any crashes and do what they claim to do by at -least two different people. You may also be assigned to issues or pull +least two different people. +- You may also be assigned to issues or pull requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can also unassign yourself from the issue / PR if you have no time or don't want to take care of it for some other reason (after all, everyone is a volunteer and we can't expect you to do work that you are not intrested -in) - the important thing is really that you make sure to inform us if -you won't take care of something that has been assigned to you. Also, -please assign yourself to something that you want to work on to avoid -duplicate work. As a developer, it should be easy to reach you about +in) - **the important thing is that you make sure to inform us if you +won't take care of something that has been assigned to you.** +- Please assign yourself to something that you want to work on to avoid +duplicate work. +- As a developer, it should be easy to reach you about your code. You should be on the Discord (or, if you really don't like Discord, Matrix or IRC). From 1bd972bff7cf48e7076cc28f5c03a6067f5b27b2 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 12:11:18 +0200 Subject: [PATCH 135/271] Split maintainer responsibilities into list --- CONTRIBUTING.md | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 58762bfcb..fed4885b4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -299,19 +299,25 @@ your code. You should be on the Discord (or, if you really don't like Discord, Matrix or IRC). ### Maintainer status -Maintainers are responsible for making sure issues are addressed and -pull requests are reviewed and merged, by assigning either themselves or -Developers to issues / PRs. Maintainers are responsible for making -releases, making sure guidelines are kept and making project decisions -based on what the community wants. Maintainers grant/revoke developer -access. Currently there are two maintainers with different -responsibility fields: +Maintainers carry the main responsibility for the project. +#### Maintainer responsibilities +- Making sure issues are addressed and pull requests are reviewed and +merged, by assigning either themselves or Developers to issues / PRs +- Making releases +- Making sure guidelines are kept +- Making project decisions based on what the community wants +- Granting/revoking developer access +- Enforcing the code of conduct (See CODE_OF_CONDUCT.md) +- Moderating official community spaces (See Links section) +- Resolving conflicts and problems within the community + +#### Current maintainers * Fleckenstein - responsible for gameplay review, publishing releases, technical guidelines and issue/PR delegation * Nicu - responsible for community related issues -#### Creating releases +#### Release process * Launch MineClone2 to make sure it still runs * Update the version number in README.md * Use `git tag ` to tag the latest commit with the From 64ebdd0f18beabe915bcabed52b52bf1bb7433e5 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 12:16:00 +0200 Subject: [PATCH 136/271] Update line length in licensing section --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fed4885b4..eb93cc2ff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -330,9 +330,9 @@ version number * Post release announcement and changelog in forums ### Licensing -By asking us to include your changes in -this game, you agree that they fall under the terms of the GPLv3, which -basically means they will become part of a free software. +By asking us to include your changes in this game, you agree that they +fall under the terms of the GPLv3, which basically means they will +become part of a free software. ### Crediting Contributors, Developers and Maintainers will be credited in From 0c567c7921b63d2b690577cd45de2467bdbebb43 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 12:22:21 +0200 Subject: [PATCH 137/271] Update maintainer section in CREDITS.md (leave kay27 in, but remove jordan since he never did any maintainance work) --- CREDITS.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CREDITS.md b/CREDITS.md index de3dcae61..3d039f6b1 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -8,8 +8,8 @@ ## Maintainers * Fleckenstein +* Nicu * kay27 -* jordan4ibanez ## Developers * bzoss @@ -19,7 +19,6 @@ * iliekprogrammar * MysticTempest * Rootyjr -* Nicu * aligator * Code-Sploit * NO11 From c315d155e1a51a678931be04b16ae9bcc3cf91ae Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 12:35:19 +0200 Subject: [PATCH 138/271] Update CREDITS.md --- CREDITS.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/CREDITS.md b/CREDITS.md index 3d039f6b1..95884dcac 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -22,6 +22,8 @@ * aligator * Code-Sploit * NO11 +* cora +* jordan4ibanez ## Contributors * Laurent Rocher @@ -47,8 +49,24 @@ * dBeans * nickolas360 * yutyo -* ztianyang +* Tianyang Zhang * j45 +* Marcin Serwin +* erlehmann +* E +* Benjamin Schötz +* Doloment +* Sydney Gems +* talamh +* Emily2255 +* Emojigit +* FinishedFragment +* sfan5 +* Blue Blancmange +* Jared Moody +* SmallJoker +* Sven792 +* aldum ## MineClone5 * kay27 @@ -73,7 +91,6 @@ * Rochambeau * rubenwardy * stu -* jordan4ibanez * 4aiman * Kahrl * Krock @@ -102,6 +119,7 @@ * xMrVizzy * yutyo * NO11 +* kay27 ## Translations * Wuzzy @@ -110,6 +128,7 @@ * kay27 * pitchum * todoporlalibertad +* Marcin Serwin ## Special thanks * celeron55 for creating Minetest From 797da20fa7d4c83f411a4c2586ed16b1c1da913a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 13:08:07 +0200 Subject: [PATCH 139/271] Add script to automatically generate ingame credits from CREDITS.md --- mods/HUD/mcl_credits/init.lua | 121 +------------------------ mods/HUD/mcl_credits/people.lua | 141 ++++++++++++++++++++++++++++++ tools/generate_ingame_credits.lua | 49 +++++++++++ 3 files changed, 193 insertions(+), 118 deletions(-) create mode 100644 mods/HUD/mcl_credits/people.lua create mode 100755 tools/generate_ingame_credits.lua diff --git a/mods/HUD/mcl_credits/init.lua b/mods/HUD/mcl_credits/init.lua index 235b2a3cb..db3ac8436 100644 --- a/mods/HUD/mcl_credits/init.lua +++ b/mods/HUD/mcl_credits/init.lua @@ -3,123 +3,8 @@ local S = minetest.get_translator(modname) mcl_credits = { players = {}, -} - -mcl_credits.description = S("A faithful Open Source clone of Minecraft") - --- Sub-lists are sorted by number of commits, but the list should not be rearranged (-> new contributors are just added at the end of the list) -mcl_credits.people = { - { S("Creator of MineClone"), 0x0A9400, { - "davedevils", - }}, - { S("Creator of MineClone2"), 0xFBF837, { - "Wuzzy", - }}, - { S("Maintainers"), 0xFF51D5, { - "Fleckenstein", - "kay27", - "oilboi", - }}, - { S("Developers"), 0xF84355, { - "bzoss", - "AFCMS", - "epCode", - "ryvnf", - "iliekprogrammar", - "MysticTempest", - "Rootyjr", - "Nicu", - "aligator", - "Code-Sploit", - "NO11", - }}, - { S("Contributors"), 0x52FF00, { - "Laurent Rocher", - "HimbeerserverDE", - "TechDudie", - "Alexander Minges", - "ArTee3", - "ZeDique la Ruleta", - "pitchum", - "wuniversales", - "Bu-Gee", - "David McMackins II", - "Nicholas Niro", - "Wouters Dorian", - "Blue Blancmange", - "Jared Moody", - "Li0n", - "Midgard", - "Saku Laesvuori", - "Yukitty", - "ZedekThePD", - "aldum", - "dBeans", - "nickolas360", - "yutyo", - "ztianyang", - "j45", - }}, - {"MineClone5", 0xA60014, { - "kay27", - "Debiankaios", - "epCode", - "NO11", - "j45", - }}, - { S("Original Mod Authors"), 0x343434, { - "Wuzzy", - "Fleckenstein", - "BlockMen", - "TenPlus1", - "PilzAdam", - "ryvnf", - "stujones11", - "Arcelmi", - "celeron55", - "maikerumine", - "GunshipPenguin", - "Qwertymine3", - "Rochambeau", - "rubenwardy", - "stu", - "oilboi", - "4aiman", - "Kahrl", - "Krock", - "UgnilJoZ", - "lordfingle", - "22i", - "bzoss", - "kilbith", - "xeranas", - "kddekadenz", - "sofar", - "4Evergreen4", - "jordan4ibanez", - "paramat", - }}, - { S("3D Models"), 0x0019FF, { - "22i", - "tobyplowy", - "epCode", - }}, - { S("Textures"), 0xFF9705, { - "XSSheep", - "Wuzzy", - "kingoscargames", - "leorockway", - "xMrVizzy", - "yutyo", - "NO11", - }}, - { S("Translations"), 0x00FF60, { - "Wuzzy", - "Rocher Laurent", - "wuniversales", - "kay27", - "pitchum", - }}, + description = S("A faithful Open Source clone of Minecraft"), + people = dofile(minetest.get_modpath(modname) .. "/people.lua"), } local function add_hud_element(def, huds, y) @@ -243,7 +128,7 @@ minetest.register_globalstep(function(dtime) y = y - 5 end end - + if y > -100 then if id == huds.icon then y = math.max(400, y) diff --git a/mods/HUD/mcl_credits/people.lua b/mods/HUD/mcl_credits/people.lua new file mode 100644 index 000000000..2861b5052 --- /dev/null +++ b/mods/HUD/mcl_credits/people.lua @@ -0,0 +1,141 @@ +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) + +return { + {S("Creator of MineClone"), 0x0A9400, { + "davedevils", + }}, + {S("Creator of MineClone2"), 0xFBF837, { + "Wuzzy", + }}, + {S("Maintainers"), 0xFF51D5, { + "Fleckenstein", + "Nicu", + "kay27", + }}, + {S("Developers"), 0xF84355, { + "bzoss", + "AFCMS", + "epCode", + "ryvnf", + "iliekprogrammar", + "MysticTempest", + "Rootyjr", + "aligator", + "Code-Sploit", + "NO11", + "cora", + "jordan4ibanez", + }}, + {S("Contributors"), 0x52FF00, { + "Laurent Rocher", + "HimbeerserverDE", + "TechDudie", + "Alexander Minges", + "ArTee3", + "ZeDique la Ruleta", + "pitchum", + "wuniversales", + "Bu-Gee", + "David McMackins II", + "Nicholas Niro", + "Wouters Dorian", + "Blue Blancmange", + "Jared Moody", + "Li0n", + "Midgard", + "Saku Laesvuori", + "Yukitty", + "ZedekThePD", + "aldum", + "dBeans", + "nickolas360", + "yutyo", + "Tianyang Zhang", + "j45", + "Marcin Serwin", + "erlehmann", + "E", + "Benjamin Schötz", + "Doloment", + "Sydney Gems", + "talamh", + "Emily2255", + "Emojigit", + "FinishedFragment", + "sfan5", + "Blue Blancmange", + "Jared Moody", + "SmallJoker", + "Sven792", + "aldum", + }}, + {S("MineClone5"), 0xA60014, { + "kay27", + "Debiankaios", + "epCode", + "NO11", + "j45", + }}, + {S("Original Mod Authors"), 0x343434, { + "Wuzzy", + "Fleckenstein", + "BlockMen", + "TenPlus1", + "PilzAdam", + "ryvnf", + "stujones11", + "Arcelmi", + "celeron55", + "maikerumine", + "GunshipPenguin", + "Qwertymine3", + "Rochambeau", + "rubenwardy", + "stu", + "4aiman", + "Kahrl", + "Krock", + "UgnilJoZ", + "lordfingle", + "22i", + "bzoss", + "kilbith", + "xeranas", + "kddekadenz", + "sofar", + "4Evergreen4", + "jordan4ibanez", + "paramat", + }}, + {S("3D Models"), 0x0019FF, { + "22i", + "tobyplowy", + "epCode", + }}, + {S("Textures"), 0xFF9705, { + "XSSheep", + "Wuzzy", + "kingoscargames", + "leorockway", + "xMrVizzy", + "yutyo", + "NO11", + "kay27", + }}, + {S("Translations"), 0x00FF60, { + "Wuzzy", + "Rocher Laurent", + "wuniversales", + "kay27", + "pitchum", + "todoporlalibertad", + "Marcin Serwin", + }}, + {S("Special thanks"), 0x00E9FF, { + "celeron55 for creating Minetest", + "Jordach for the jukebox music compilation from Big Freaking Dig", + "The workaholics who spent way too much time writing for the Minecraft Wiki. It's an invaluable resource for creating this game", + "Notch and Jeb for being the major forces behind Minecraft", + }}, +} diff --git a/tools/generate_ingame_credits.lua b/tools/generate_ingame_credits.lua new file mode 100755 index 000000000..89b633ef0 --- /dev/null +++ b/tools/generate_ingame_credits.lua @@ -0,0 +1,49 @@ +#! /usr/bin/env lua +-- Script to automatically generate mods/HUD/mcl_credits/people.lua from CREDITS.md +-- Run from MCL2 root folder + +local colors = { + ["Creator of MineClone"] = "0x0A9400", + ["Creator of MineClone2"] = "0xFBF837", + ["Maintainers"] = "0xFF51D5", + ["Developers"] = "0xF84355", + ["Contributors"] = "0x52FF00", + ["MineClone5"] = "0xA60014", + ["Original Mod Authors"] = "0x343434", + ["3D Models"] = "0x0019FF", + ["Textures"] = "0xFF9705", + ["Translations"] = "0x00FF60", + ["Special thanks"] = "0x00E9FF", +} + +local from = io.open("CREDITS.md", "r") +local to = io.open("mods/HUD/mcl_credits/people.lua", "w") + +to:write([[ +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) + +]]) + +to:write("return {\n") + +local started_block = false + +for line in from:lines() do + if line:find("## ") == 1 then + if started_block then + to:write("\t}},\n") + end + local title = line:sub(4, #line) + to:write("\t{S(\"" .. title .. "\"), " .. (colors[title] or "0xFFFFFF") .. ", {\n") + started_block = true + elseif line:find("*") == 1 then + to:write("\t\t\"" .. line:sub(3, #line) .. "\",\n") + end +end + +if started_block then + to:write("\t}},\n") +end + +to:write("}\n") From 835076ea4b2ed25d850ce2452b858fd26ab4364f Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 26 Oct 2021 14:28:40 +0200 Subject: [PATCH 140/271] Document asset contributions --- CONTRIBUTING.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index eb93cc2ff..e817f81bd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -113,6 +113,63 @@ pull requests here: requests that start with a `WIP:` are not done yet, and therefore might not work, so it's not very useful to try them out yet. +### Contributing assets +Due to license problems, MineClone2 can unfortunately not use +Minecraft's assets, therefore we are always looking for asset +contributions. To contribute assets, it can be useful to learn git +basics and read the section for Programmers of this document, however +this is not required. It's also a good idea to join the Discord server +(or alternatively IRC or Matrix). + +#### Textures +For textures we use the Pixel Perfection texture pack. This is mostly +enough; however in some cases - e.g. for newer minecraft features, it's +useful to have texture artists around. If you want to make such +contributions, join our Discord server. Demands for textures will be +communicated there. + +#### Sounds +MineClone2 currently does not have a consistent way to handle sounds. +The sounds in the game come from different sources, like the SnowZone +ressource pack or minetest_game. Unfortunately, MineClone2 does not play +a sound in every situation you would get one in Minecraft. Any help with +sounds is greatly appreciated, however if you add new sounds you should +probably work together with a programmer, to write the code to actually +play these sounds in game. + +#### 3D Models +Most of the 3D Models in MineClone2 come from +[22i's repository](https://github.com/22i/minecraft-voxel-blender-models). +Similar to the textures, we need people that can make 3D Models with +Blender on demand. Many of the models have to be patched, some new +animations have to be added etc. + +#### Translations + +##### Workflow +To add/update support for your language to MineClone2, you should take +the steps documented in the section for Programmers, add/update the +translation files of the mods that you want to update. You can add +support for all mods, just some of them or only one mod; you can update +the translation file entirely or only partly; basically any effort is +valued. If your changes are small, you can also send them to developers +via E-Mail, Discord, IRC or Matrix - they will credit you appropriately. + +##### Things to note +You can use the script at `tools/check_translate_files.py` to compare +the translation files for the language you are working on with the +template files, to see what is missing and what is out of date with +the template file. However, template files are often incomplete and/or +out of date, sometimes they don't match the code. You can update the +translation files if that is required, you can also modifiy the code in +your translation PR if it's related to translation. You can also work on +multiple languages at the same time in one PR. + +#### Crediting +Asset contributions will be credited in their own respective sections in +CREDITS.md. If you have commited the results yourself, you will also be +credited in the Contributors section. + ### Profiling If you own a server, a great way to help us improve MineClone2's code is by giving us profiler results. Profiler results give us detailed From 19689dd857c047fb857489ed4385b4c5440400c6 Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 26 Oct 2021 16:50:10 +0000 Subject: [PATCH 141/271] Use enchanted golden apple for thing banner --- mods/ITEMS/mcl_banners/patterncraft.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_banners/patterncraft.lua b/mods/ITEMS/mcl_banners/patterncraft.lua index 79778a665..767235b1e 100644 --- a/mods/ITEMS/mcl_banners/patterncraft.lua +++ b/mods/ITEMS/mcl_banners/patterncraft.lua @@ -119,8 +119,7 @@ local patterns = { name = N("@1 Thing Charge"), type = "shapeless", - -- TODO: Replace with enchanted golden apple - { e, "mcl_core:apple_gold", d }, + { e, "mcl_core:apple_gold_enchanted", d }, }, ["rhombus"] = { name = N("@1 Lozenge"), From d30e014233957a0b31f06c0e0f753ab005028282 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:40:45 +0200 Subject: [PATCH 142/271] Mineclone2 -> MineClone2 --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e817f81bd..bd02346b4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -41,7 +41,7 @@ MineClone2 is developed using the version control system [git](https://git-scm.com/). If you want to contribute code to the project, it is **highly recommended** that you learn the git basics. For non-programmers and people who do not plan to contribute code to -Mineclone2, git is not required. However, git is a tool that will be +MineClone2, git is not required. However, git is a tool that will be referenced frequently because of its usefulness. As such, it is valuable in learning how git works and its terminology. It can also help you in keeping your game updated, and easily testing pull requests. @@ -91,7 +91,7 @@ behavior. * Make sure the feature you request is Minecraft 1.17 Java Edition or Optifine behavior. * Begging or excessive attention seeking does not help us in the -slightest, and may very well disrupt Mineclone2 development. It's better +slightest, and may very well disrupt MineClone2 development. It's better to put that energy into helping or researching the feature in question. After all, we're just volunteers working on our spare time. * Check whether the feature has been implemented in a newer version of From 90796ec7b44d0eab168c77cae2c205e2b296b62f Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:42:11 +0200 Subject: [PATCH 143/271] can unfortunately not -> unfortunately cannot --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bd02346b4..d200085ff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -114,7 +114,7 @@ requests that start with a `WIP:` are not done yet, and therefore might not work, so it's not very useful to try them out yet. ### Contributing assets -Due to license problems, MineClone2 can unfortunately not use +Due to license problems, MineClone2 unfortunately cannot use Minecraft's assets, therefore we are always looking for asset contributions. To contribute assets, it can be useful to learn git basics and read the section for Programmers of this document, however From 61dccfb9e529be38be73fea6cf1f90827e410e26 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:44:10 +0200 Subject: [PATCH 144/271] Reword up to date guideline for feature requests --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d200085ff..482bd6c00 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -94,8 +94,8 @@ Optifine behavior. slightest, and may very well disrupt MineClone2 development. It's better to put that energy into helping or researching the feature in question. After all, we're just volunteers working on our spare time. -* Check whether the feature has been implemented in a newer version of -MineClone2, in case you are not using the latest one. +* Ensure the requested feature has not been implemented in MineClone2 +latest or development versions. ### Testing code If you want to help us with speeding up MineClone2 development and From c1934c4f3a7d720854a9ece52fc7d34213733d59 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:45:37 +0200 Subject: [PATCH 145/271] Reword feature request alignment with development goals guideline --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 482bd6c00..d8929c9e5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -88,8 +88,8 @@ the bug, e.g. before the crash happened or what causes the faulty behavior. ### Requesting features -* Make sure the feature you request is Minecraft 1.17 Java Edition or -Optifine behavior. +* Ensure the requested feature fulfills our development targets and +goals. * Begging or excessive attention seeking does not help us in the slightest, and may very well disrupt MineClone2 development. It's better to put that energy into helping or researching the feature in question. From 938911e7e383e0f625574c40c49e4ce1b5f551e6 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:46:58 +0200 Subject: [PATCH 146/271] even help using -> assist you use --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d8929c9e5..949b61ddb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -219,7 +219,7 @@ relatively new programmer, you can reach us on Discord, Matrix or IRC for questions about git, Lua, Minetest API, MineClone2 codebase or anything related to MineClone2. We can help you avoid writing code that would be deemed inadequeate, or help you become familiar with MineClone2 -better, or even help using development tools. +better, or assist you use development tools. ### Maintain your own code, even if alreay got merged Sometimes, your code may cause crashes or bugs - we try to avoid such From fb2a501a9c5d104096b968cb13ea97e11c75f46b Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:47:38 +0200 Subject: [PATCH 147/271] Keep our guidelines -> Stick to our guidelines --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 949b61ddb..a6385f627 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -242,7 +242,7 @@ of the results) * [Official Minecraft Wiki](https://minecraft.fandom.com/wiki/Minecraft_Wiki) (Include a link to the specific page you used) -### Keep our guidelines +### Stick to our guidelines #### Git Guidelines * We use merge rather than rebase or squash merge From 4db9952a84df35d96b127b40a2e93735ae2e8b83 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:48:38 +0200 Subject: [PATCH 148/271] if -> only when --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a6385f627..35b3eaa3e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -338,9 +338,9 @@ MineClone2 repository. MineClone2 master - rather, do your work on a branch on your private repo, then create a pull request. This way other people can review your changes and make sure they work before they get merged. -- Merge PRs if they have recieved the necessary feedback and have been -tested to not lead to any crashes and do what they claim to do by at -least two different people. +- Merge PRs only when they have recieved the necessary feedback and have +been tested to not lead to any crashes and do what they claim to do by +at least two different people. - You may also be assigned to issues or pull requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can From 11e364b3ec7bc472f04f6d17cc38113ea5aacd97 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:52:26 +0200 Subject: [PATCH 149/271] Give development target it's own headline --- CONTRIBUTING.md | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 35b3eaa3e..c328ca371 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,10 +2,13 @@ So you want to contribute to MineClone2? Wow, thank you! :-) -But first, some things to note: +MineClone2 is maintained by Nicu and Fleckenstein. If you have any +problems or questions, contact us (See Links section below). -MineClone2's development target is to... +You can help with MineClone2's development in many different ways, +whether you're a programmer or not. +## MineClone2's development target is to... - Crucially, create a stable, moddable, free/libre clone of Minecraft based on the Minetest engine with polished features, usable in both singleplayer and multiplayer. Currently, most of **Minecraft Java @@ -21,12 +24,6 @@ well on really low spec computers. Unfortunately, due to Minecraft's mechanisms and Minetest engine's limitations along with a very small playerbase on low spec computers, optimizations are hard to investigate. -MineClone2 is maintained by Nicu and Fleckenstein. If you have any -problems or questions, contact us (See Links section below). - -You can help with MineClone2's development in many different ways, -whether you're a programmer or not. - ## Links * [Mesehub](https://git.minetest.land/MineClone2/MineClone2) * [Discord](https://discord.gg/xE4z8EEpDC) From 6fd8ff8865af2841366a730239e9babc465cb65d Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 27 Oct 2021 18:54:39 +0200 Subject: [PATCH 150/271] testing -> test --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c328ca371..56876fad1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -40,8 +40,8 @@ project, it is **highly recommended** that you learn the git basics. For non-programmers and people who do not plan to contribute code to MineClone2, git is not required. However, git is a tool that will be referenced frequently because of its usefulness. As such, it is valuable -in learning how git works and its terminology. It can also help you in -keeping your game updated, and easily testing pull requests. +in learning how git works and its terminology. It can also help you +keeping your game updated, and easily test pull requests. ## How you can help as a non-programmer From bbdd8f55eb28acf6245864f3eeff8aa0071949a6 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 28 Oct 2021 09:34:39 +0200 Subject: [PATCH 151/271] Reword 'reporting issues' part in 'testing pull requests' section --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 56876fad1..de3ae536e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -103,9 +103,10 @@ programmer saying "Look, I modified the game, please apply my changes to the upstream version of the game". However, every programmer makes mistakes sometimes, some of which are hard to spot. You can help by downloading this modified version of the game and trying it out - then -you tell us whether the code works and does what it claims to do or -whether you have encountered any issues. You can find currently open -pull requests here: +tell us if the code works as expected without any issues. Ideally, you +would report issues will pull requests similar to when you were +reporting bugs that are the mainline (See Reporting bugs section). You +can find currently open pull requests here: . Note that pull requests that start with a `WIP:` are not done yet, and therefore might not work, so it's not very useful to try them out yet. From 5b37f5600504608e3cd0dbffc1c43c15a6b6c14d Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 28 Oct 2021 09:43:14 +0000 Subject: [PATCH 152/271] Remove small gray border of buttons in creative inventory pages --- mods/HUD/mcl_inventory/creative.lua | 1339 +++++++++++++-------------- 1 file changed, 669 insertions(+), 670 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index ff9cccf9e..2be0be4bc 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -1,670 +1,669 @@ -local S = minetest.get_translator(minetest.get_current_modname()) -local F = minetest.formspec_escape - --- Prepare player info table -local players = {} - --- Containing all the items for each Creative Mode tab -local inventory_lists = {} - ---local mod_player = minetest.get_modpath("mcl_player") - --- Create tables -local builtin_filter_ids = {"blocks","deco","redstone","rail","food","tools","combat","mobs","brew","matr","misc","all"} -for _, f in pairs(builtin_filter_ids) do - inventory_lists[f] = {} -end - -local function replace_enchanted_books(tbl) - for k, item in ipairs(tbl) do - if item:find("mcl_enchanting:book_enchanted") == 1 then - local _, enchantment, level = item:match("(%a+) ([_%w]+) (%d+)") - level = level and tonumber(level) - if enchantment and level then - tbl[k] = mcl_enchanting.enchant(ItemStack("mcl_enchanting:book_enchanted"), enchantment, level) - end - end - end -end - ---[[ Populate all the item tables. We only do this once. Note this code must be -executed after loading all the other mods in order to work. ]] -minetest.register_on_mods_loaded(function() - for name,def in pairs(minetest.registered_items) do - if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) and def.description and def.description ~= "" then - local function is_redstone(def) - return def.mesecons or def.groups.mesecon or def.groups.mesecon_conductor_craftable or def.groups.mesecon_effecor_off - end - local function is_tool(def) - return def.groups.tool or (def.tool_capabilities and def.tool_capabilities.damage_groups == nil) - end - local function is_weapon_or_armor(def) - return def.groups.weapon or def.groups.weapon_ranged or def.groups.ammo or def.groups.combat_item or ((def.groups.armor_head or def.groups.armor_torso or def.groups.armor_legs or def.groups.armor_feet or def.groups.horse_armor) and def.groups.non_combat_armor ~= 1) - end - -- Is set to true if it was added in any category besides misc - local nonmisc = false - if def.groups.building_block then - table.insert(inventory_lists["blocks"], name) - nonmisc = true - end - if def.groups.deco_block then - table.insert(inventory_lists["deco"], name) - nonmisc = true - end - if is_redstone(def) then - table.insert(inventory_lists["redstone"], name) - nonmisc = true - end - if def.groups.transport then - table.insert(inventory_lists["rail"], name) - nonmisc = true - end - if (def.groups.food and not def.groups.brewitem) or def.groups.eatable then - table.insert(inventory_lists["food"], name) - nonmisc = true - end - if is_tool(def) then - table.insert(inventory_lists["tools"], name) - nonmisc = true - end - if is_weapon_or_armor(def) then - table.insert(inventory_lists["combat"], name) - nonmisc = true - end - if def.groups.spawn_egg == 1 then - table.insert(inventory_lists["mobs"], name) - nonmisc = true - end - if def.groups.brewitem then - table.insert(inventory_lists["brew"], name) - nonmisc = true - end - if def.groups.craftitem then - table.insert(inventory_lists["matr"], name) - nonmisc = true - end - -- Misc. category is for everything which is not in any other category - if not nonmisc then - table.insert(inventory_lists["misc"], name) - end - - table.insert(inventory_lists["all"], name) - end - end - - for ench, def in pairs(mcl_enchanting.enchantments) do - local str = "mcl_enchanting:book_enchanted " .. ench .. " " .. def.max_level - if def.inv_tool_tab then - table.insert(inventory_lists["tools"], str) - end - if def.inv_combat_tab then - table.insert(inventory_lists["combat"], str) - end - table.insert(inventory_lists["all"], str) - end - - for _, to_sort in pairs(inventory_lists) do - table.sort(to_sort) - replace_enchanted_books(to_sort) - end -end) - -local function filter_item(name, description, lang, filter) - local desc - if not lang then - desc = string.lower(description) - else - desc = string.lower(minetest.get_translated_string(lang, description)) - end - return string.find(name, filter) or string.find(desc, filter) -end - -local function set_inv_search(filter, player) - local playername = player:get_player_name() - local inv = minetest.get_inventory({type="detached", name="creative_"..playername}) - local creative_list = {} - local lang = minetest.get_player_information(playername).lang_code - for name,def in pairs(minetest.registered_items) do - if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) and def.description and def.description ~= "" then - if filter_item(string.lower(def.name), def.description, lang, filter) then - table.insert(creative_list, name) - end - end - end - for ench, def in pairs(mcl_enchanting.enchantments) do - for i = 1, def.max_level do - local stack = mcl_enchanting.enchant(ItemStack("mcl_enchanting:book_enchanted"), ench, i) - if filter_item("mcl_enchanting:book_enchanted", minetest.strip_colors(stack:get_description()), lang, filter) then - table.insert(creative_list, "mcl_enchanting:book_enchanted " .. ench .. " " .. i) - end - end - end - table.sort(creative_list) - replace_enchanted_books(creative_list) - - inv:set_size("main", #creative_list) - inv:set_list("main", creative_list) -end - -local function set_inv_page(page, player) - local playername = player:get_player_name() - local inv = minetest.get_inventory({type="detached", name="creative_"..playername}) - inv:set_size("main", 0) - local creative_list = {} - if inventory_lists[page] then -- Standard filter - creative_list = inventory_lists[page] - end - inv:set_size("main", #creative_list) - inv:set_list("main", creative_list) -end - -local function init(player) - local playername = player:get_player_name() - minetest.create_detached_inventory("creative_"..playername, { - allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) - if minetest.is_creative_enabled(playername) then - return count - else - return 0 - end - end, - allow_put = function(inv, listname, index, stack, player) - return 0 - end, - allow_take = function(inv, listname, index, stack, player) - if minetest.is_creative_enabled(player:get_player_name()) then - return -1 - else - return 0 - end - end, - }, playername) - set_inv_page("all", player) -end - --- Create the trash field -local trash = minetest.create_detached_inventory("trash", { - allow_put = function(inv, listname, index, stack, player) - if minetest.is_creative_enabled(player:get_player_name()) then - return stack:get_count() - else - return 0 - end - end, - on_put = function(inv, listname, index, stack, player) - inv:set_stack(listname, index, "") - end, -}) -trash:set_size("main", 1) - -local noffset = {} -- numeric tab offset -local offset = {} -- string offset: -local boffset = {} -- -local hoch = {} -local filtername = {} ---local bg = {} - -local noffset_x_start = -0.24 -local noffset_x = noffset_x_start -local noffset_y = -0.25 -local function next_noffset(id, right) - if right then - noffset[id] = { 8.94, noffset_y } - else - noffset[id] = { noffset_x, noffset_y } - noffset_x = noffset_x + 1.25 - end -end - --- Upper row -next_noffset("blocks") -next_noffset("deco") -next_noffset("redstone") -next_noffset("rail") -next_noffset("brew") -next_noffset("misc") -next_noffset("nix", true) - -noffset_x = noffset_x_start -noffset_y = 8.12 - --- Lower row -next_noffset("food") -next_noffset("tools") -next_noffset("combat") -next_noffset("mobs") -next_noffset("matr") -next_noffset("inv", true) - -for k,v in pairs(noffset) do - offset[k] = tostring(v[1]) .. "," .. tostring(v[2]) - boffset[k] = tostring(v[1]+0.19) .. "," .. tostring(v[2]+0.25) -end - -hoch["blocks"] = "" -hoch["deco"] = "" -hoch["redstone"] = "" -hoch["rail"] = "" -hoch["brew"] = "" -hoch["misc"] = "" -hoch["nix"] = "" -hoch["default"] = "" -hoch["food"] = "_down" -hoch["tools"] = "_down" -hoch["combat"] = "_down" -hoch["mobs"] = "_down" -hoch["matr"] = "_down" -hoch["inv"] = "_down" - -filtername["blocks"] = S("Building Blocks") -filtername["deco"] = S("Decoration Blocks") -filtername["redstone"] = S("Redstone") -filtername["rail"] = S("Transportation") -filtername["misc"] = S("Miscellaneous") -filtername["nix"] = S("Search Items") -filtername["food"] = S("Foodstuffs") -filtername["tools"] = S("Tools") -filtername["combat"] = S("Combat") -filtername["mobs"] = S("Mobs") -filtername["brew"] = S("Brewing") -filtername["matr"] = S("Materials") -filtername["inv"] = S("Survival Inventory") - ---local dark_bg = "crafting_creative_bg_dark.png" - ---[[local function reset_menu_item_bg() - bg["blocks"] = dark_bg - bg["deco"] = dark_bg - bg["redstone"] = dark_bg - bg["rail"] = dark_bg - bg["misc"] = dark_bg - bg["nix"] = dark_bg - bg["food"] = dark_bg - bg["tools"] = dark_bg - bg["combat"] = dark_bg - bg["mobs"] = dark_bg - bg["brew"] = dark_bg - bg["matr"] = dark_bg - bg["inv"] = dark_bg - bg["default"] = dark_bg -end]] - - -function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, show, page, filter) - --reset_menu_item_bg() - pagenum = math.floor(pagenum) or 1 - - local playername = player:get_player_name() - - if not inv_size then - if page == "nix" then - local inv = minetest.get_inventory({type="detached", name="creative_"..playername}) - inv_size = inv:get_size("main") - elseif page and page ~= "inv" then - inv_size = #(inventory_lists[page]) - else - inv_size = 0 - end - end - local pagemax = math.max(1, math.floor((inv_size-1) / (9*5) + 1)) - local name = "nix" - local main_list - local listrings = "listring[detached:creative_"..playername..";main]".. - "listring[current_player;main]".. - "listring[detached:trash;main]" - - if page then - name = page - if players[playername] then - players[playername].page = page - end - end - --bg[name] = "crafting_creative_bg.png" - - local inv_bg = "crafting_inventory_creative.png" - if name == "inv" then - inv_bg = "crafting_inventory_creative_survival.png" - - -- Show armor and player image - local player_preview - if minetest.settings:get_bool("3d_player_preview", true) then - player_preview = mcl_player.get_player_formspec_model(player, 3.9, 1.4, 1.2333, 2.4666, "") - else - player_preview = "image[3.9,1.4;1.2333,2.4666;"..mcl_player.player_get_preview(player).."]" - end - - -- Background images for armor slots (hide if occupied) - local armor_slot_imgs = "" - local inv = player:get_inventory() - if inv:get_stack("armor", 2):is_empty() then - armor_slot_imgs = armor_slot_imgs .. "image[2.5,1.3;1,1;mcl_inventory_empty_armor_slot_helmet.png]" - end - if inv:get_stack("armor", 3):is_empty() then - armor_slot_imgs = armor_slot_imgs .. "image[2.5,2.75;1,1;mcl_inventory_empty_armor_slot_chestplate.png]" - end - if inv:get_stack("armor", 4):is_empty() then - armor_slot_imgs = armor_slot_imgs .. "image[5.5,1.3;1,1;mcl_inventory_empty_armor_slot_leggings.png]" - end - if inv:get_stack("armor", 5):is_empty() then - armor_slot_imgs = armor_slot_imgs .. "image[5.5,2.75;1,1;mcl_inventory_empty_armor_slot_boots.png]" - end - - -- Survival inventory slots - main_list = "list[current_player;main;0,3.75;9,3;9]".. - mcl_formspec.get_itemslot_bg(0,3.75,9,3).. - -- armor - "list[current_player;armor;2.5,1.3;1,1;1]".. - "list[current_player;armor;2.5,2.75;1,1;2]".. - "list[current_player;armor;5.5,1.3;1,1;3]".. - "list[current_player;armor;5.5,2.75;1,1;4]".. - mcl_formspec.get_itemslot_bg(2.5,1.3,1,1).. - mcl_formspec.get_itemslot_bg(2.5,2.75,1,1).. - mcl_formspec.get_itemslot_bg(5.5,1.3,1,1).. - mcl_formspec.get_itemslot_bg(5.5,2.75,1,1).. - armor_slot_imgs.. - -- player preview - player_preview.. - -- crafting guide button - "image_button[9,1;1,1;craftguide_book.png;__mcl_craftguide;]".. - "tooltip[__mcl_craftguide;"..F(S("Recipe book")).."]".. - -- help button - "image_button[9,2;1,1;doc_button_icon_lores.png;__mcl_doc;]".. - "tooltip[__mcl_doc;"..F(S("Help")).."]".. - -- skins button - "image_button[9,3;1,1;mcl_skins_button.png;__mcl_skins;]".. - "tooltip[__mcl_skins;"..F(S("Select player skin")).."]".. - -- achievements button - "image_button[9,4;1,1;mcl_achievements_button.png;__mcl_achievements;]".. - --"style_type[image_button;border=;bgimg=;bgimg_pressed=]".. - "tooltip[__mcl_achievements;"..F(S("Achievements")).."]" - - -- For shortcuts - listrings = listrings .. - "listring[detached:"..playername.."_armor;armor]".. - "listring[current_player;main]" - else - -- Creative inventory slots - main_list = "list[detached:creative_"..playername..";main;0,1.75;9,5;"..tostring(start_i).."]".. - mcl_formspec.get_itemslot_bg(0,1.75,9,5).. - -- Page buttons - "label[9.0,5.5;"..F(S("@1/@2", pagenum, pagemax)).."]".. - "image_button[9.0,6.0;0.7,0.7;crafting_creative_prev.png;creative_prev;]".. - "image_button[9.5,6.0;0.7,0.7;crafting_creative_next.png;creative_next;]" - end - - local tab_icon = { - blocks = "mcl_core:brick_block", - deco = "mcl_flowers:peony", - redstone = "mesecons:redstone", - rail = "mcl_minecarts:golden_rail", - misc = "mcl_buckets:bucket_lava", - nix = "mcl_compass:compass", - food = "mcl_core:apple", - tools = "mcl_core:axe_iron", - combat = "mcl_core:sword_gold", - mobs = "mobs_mc:cow", - brew = "mcl_potions:dragon_breath", - matr = "mcl_core:stick", - inv = "mcl_chests:chest", - } - local function tab(current_tab, this_tab) - local bg_img - if current_tab == this_tab then - bg_img = "crafting_creative_active"..hoch[this_tab]..".png" - else - bg_img = "crafting_creative_inactive"..hoch[this_tab]..".png" - end - return - "style["..this_tab..";border=false;bgimg=;bgimg_pressed=]".. - "item_image_button[" .. boffset[this_tab] ..";1,1;"..tab_icon[this_tab]..";"..this_tab..";]".. - "image[" .. offset[this_tab] .. ";1.5,1.44;" .. bg_img .. "]" .. - "image[" .. boffset[this_tab] .. ";1,1;crafting_creative_marker.png]" - end - local caption = "" - if name ~= "inv" and filtername[name] then - caption = "label[0,1.2;"..F(minetest.colorize("#313131", filtername[name])).."]" - end - - local formspec = "size[10,9.3]".. - "no_prepend[]".. - mcl_vars.gui_nonbg..mcl_vars.gui_bg_color.. - "background[-0.19,-0.25;10.5,9.87;"..inv_bg.."]".. - "label[-5,-5;"..name.."]".. - tab(name, "blocks") .. - "tooltip[blocks;"..F(filtername["blocks"]).."]".. - tab(name, "deco") .. - "tooltip[deco;"..F(filtername["deco"]).."]".. - tab(name, "redstone") .. - "tooltip[redstone;"..F(filtername["redstone"]).."]".. - tab(name, "rail") .. - "tooltip[rail;"..F(filtername["rail"]).."]".. - tab(name, "misc") .. - "tooltip[misc;"..F(filtername["misc"]).."]".. - tab(name, "nix") .. - "tooltip[nix;"..F(filtername["nix"]).."]".. - caption.. - "list[current_player;main;0,7;9,1;]".. - mcl_formspec.get_itemslot_bg(0,7,9,1).. - main_list.. - tab(name, "food") .. - "tooltip[food;"..F(filtername["food"]).."]".. - tab(name, "tools") .. - "tooltip[tools;"..F(filtername["tools"]).."]".. - tab(name, "combat") .. - "tooltip[combat;"..F(filtername["combat"]).."]".. - tab(name, "mobs") .. - "tooltip[mobs;"..F(filtername["mobs"]).."]".. - tab(name, "brew") .. - "tooltip[brew;"..F(filtername["brew"]).."]".. - tab(name, "matr") .. - "tooltip[matr;"..F(filtername["matr"]).."]".. - tab(name, "inv") .. - "tooltip[inv;"..F(filtername["inv"]).."]".. - "list[detached:trash;main;9,7;1,1;]".. - mcl_formspec.get_itemslot_bg(9,7,1,1).. - "image[9,7;1,1;crafting_creative_trash.png]".. - listrings - - if name == "nix" then - if filter == nil then - filter = "" - end - formspec = formspec .. "field[5.3,1.34;4,0.75;search;;"..minetest.formspec_escape(filter).."]" - formspec = formspec .. "field_close_on_enter[search;false]" - end - if pagenum then formspec = formspec .. "p"..tostring(pagenum) end - player:set_inventory_formspec(formspec) -end - -minetest.register_on_player_receive_fields(function(player, formname, fields) - local page = nil - - if not minetest.is_creative_enabled(player:get_player_name()) then - return - end - if formname ~= "" or fields.quit == "true" then - -- No-op if formspec closed or not player inventory (formname == "") - return - end - - local name = player:get_player_name() - - if fields.blocks then - if players[name].page == "blocks" then return end - set_inv_page("blocks",player) - page = "blocks" - elseif fields.deco then - if players[name].page == "deco" then return end - set_inv_page("deco",player) - page = "deco" - elseif fields.redstone then - if players[name].page == "redstone" then return end - set_inv_page("redstone",player) - page = "redstone" - elseif fields.rail then - if players[name].page == "rail" then return end - set_inv_page("rail",player) - page = "rail" - elseif fields.misc then - if players[name].page == "misc" then return end - set_inv_page("misc",player) - page = "misc" - elseif fields.nix then - set_inv_page("all",player) - page = "nix" - elseif fields.food then - if players[name].page == "food" then return end - set_inv_page("food",player) - page = "food" - elseif fields.tools then - if players[name].page == "tools" then return end - set_inv_page("tools",player) - page = "tools" - elseif fields.combat then - if players[name].page == "combat" then return end - set_inv_page("combat",player) - page = "combat" - elseif fields.mobs then - if players[name].page == "mobs" then return end - set_inv_page("mobs",player) - page = "mobs" - elseif fields.brew then - if players[name].page == "brew" then return end - set_inv_page("brew",player) - page = "brew" - elseif fields.matr then - if players[name].page == "matr" then return end - set_inv_page("matr",player) - page = "matr" - elseif fields.inv then - if players[name].page == "inv" then return end - page = "inv" - elseif fields.search == "" and not fields.creative_next and not fields.creative_prev then - set_inv_page("all", player) - page = "nix" - elseif fields.search and not fields.creative_next and not fields.creative_prev then - set_inv_search(string.lower(fields.search),player) - page = "nix" - end - - if page then - players[name].page = page - end - if players[name].page then - page = players[name].page - end - - -- Figure out current scroll bar from formspec - --local formspec = player:get_inventory_formspec() - - local start_i = players[name].start_i - - if fields.creative_prev then - start_i = start_i - 9*5 - elseif fields.creative_next then - start_i = start_i + 9*5 - else - -- Reset scroll bar if not scrolled - start_i = 0 - end - if start_i < 0 then - start_i = start_i + 9*5 - end - - local inv_size - if page == "nix" then - local inv = minetest.get_inventory({type="detached", name="creative_"..name}) - inv_size = inv:get_size("main") - elseif page and page ~= "inv" then - inv_size = #(inventory_lists[page]) - else - inv_size = 0 - end - - if start_i >= inv_size then - start_i = start_i - 9*5 - end - if start_i < 0 or start_i >= inv_size then - start_i = 0 - end - players[name].start_i = start_i - - local filter = "" - if not fields.nix and fields.search and fields.search ~= "" then - filter = fields.search - players[name].filter = filter - end - - mcl_inventory.set_creative_formspec(player, start_i, start_i / (9*5) + 1, inv_size, false, page, filter) -end) - - -if minetest.is_creative_enabled("") then - minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack) - -- Place infinite nodes, except for shulker boxes - local group = minetest.get_item_group(itemstack:get_name(), "shulker_box") - return group == 0 or group == nil - end) - - function minetest.handle_node_drops(pos, drops, digger) - if not digger or not digger:is_player() then - for _,item in ipairs(drops) do - minetest.add_item(pos, item) - end - end - local inv = digger:get_inventory() - if inv then - for _,item in ipairs(drops) do - if not inv:contains_item("main", item, true) then - inv:add_item("main", item) - end - end - end - end - - mcl_inventory.update_inventory_formspec = function(player) - local page - - local name = player:get_player_name() - - if players[name].page then - page = players[name].page - else - page = "nix" - end - - -- Figure out current scroll bar from formspec - --local formspec = player:get_inventory_formspec() - local start_i = players[name].start_i - - local inv_size - if page == "nix" then - local inv = minetest.get_inventory({type="detached", name="creative_"..name}) - inv_size = inv:get_size("main") - elseif page and page ~= "inv" then - inv_size = #(inventory_lists[page]) - else - inv_size = 0 - end - - local filter = players[name].filter - if filter == nil then - filter = "" - end - - mcl_inventory.set_creative_formspec(player, start_i, start_i / (9*5) + 1, inv_size, false, page, filter) - end -end - -minetest.register_on_joinplayer(function(player) - -- Initialize variables and inventory - local name = player:get_player_name() - if not players[name] then - players[name] = {} - players[name].page = "nix" - players[name].filter = "" - players[name].start_i = 0 - end - init(player) - mcl_inventory.set_creative_formspec(player, 0, 1, nil, false, "nix", "") -end) +local S = minetest.get_translator(minetest.get_current_modname()) +local F = minetest.formspec_escape + +-- Prepare player info table +local players = {} + +-- Containing all the items for each Creative Mode tab +local inventory_lists = {} + +--local mod_player = minetest.get_modpath("mcl_player") + +-- Create tables +local builtin_filter_ids = {"blocks","deco","redstone","rail","food","tools","combat","mobs","brew","matr","misc","all"} +for _, f in pairs(builtin_filter_ids) do + inventory_lists[f] = {} +end + +local function replace_enchanted_books(tbl) + for k, item in ipairs(tbl) do + if item:find("mcl_enchanting:book_enchanted") == 1 then + local _, enchantment, level = item:match("(%a+) ([_%w]+) (%d+)") + level = level and tonumber(level) + if enchantment and level then + tbl[k] = mcl_enchanting.enchant(ItemStack("mcl_enchanting:book_enchanted"), enchantment, level) + end + end + end +end + +--[[ Populate all the item tables. We only do this once. Note this code must be +executed after loading all the other mods in order to work. ]] +minetest.register_on_mods_loaded(function() + for name,def in pairs(minetest.registered_items) do + if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) and def.description and def.description ~= "" then + local function is_redstone(def) + return def.mesecons or def.groups.mesecon or def.groups.mesecon_conductor_craftable or def.groups.mesecon_effecor_off + end + local function is_tool(def) + return def.groups.tool or (def.tool_capabilities and def.tool_capabilities.damage_groups == nil) + end + local function is_weapon_or_armor(def) + return def.groups.weapon or def.groups.weapon_ranged or def.groups.ammo or def.groups.combat_item or ((def.groups.armor_head or def.groups.armor_torso or def.groups.armor_legs or def.groups.armor_feet or def.groups.horse_armor) and def.groups.non_combat_armor ~= 1) + end + -- Is set to true if it was added in any category besides misc + local nonmisc = false + if def.groups.building_block then + table.insert(inventory_lists["blocks"], name) + nonmisc = true + end + if def.groups.deco_block then + table.insert(inventory_lists["deco"], name) + nonmisc = true + end + if is_redstone(def) then + table.insert(inventory_lists["redstone"], name) + nonmisc = true + end + if def.groups.transport then + table.insert(inventory_lists["rail"], name) + nonmisc = true + end + if (def.groups.food and not def.groups.brewitem) or def.groups.eatable then + table.insert(inventory_lists["food"], name) + nonmisc = true + end + if is_tool(def) then + table.insert(inventory_lists["tools"], name) + nonmisc = true + end + if is_weapon_or_armor(def) then + table.insert(inventory_lists["combat"], name) + nonmisc = true + end + if def.groups.spawn_egg == 1 then + table.insert(inventory_lists["mobs"], name) + nonmisc = true + end + if def.groups.brewitem then + table.insert(inventory_lists["brew"], name) + nonmisc = true + end + if def.groups.craftitem then + table.insert(inventory_lists["matr"], name) + nonmisc = true + end + -- Misc. category is for everything which is not in any other category + if not nonmisc then + table.insert(inventory_lists["misc"], name) + end + + table.insert(inventory_lists["all"], name) + end + end + + for ench, def in pairs(mcl_enchanting.enchantments) do + local str = "mcl_enchanting:book_enchanted " .. ench .. " " .. def.max_level + if def.inv_tool_tab then + table.insert(inventory_lists["tools"], str) + end + if def.inv_combat_tab then + table.insert(inventory_lists["combat"], str) + end + table.insert(inventory_lists["all"], str) + end + + for _, to_sort in pairs(inventory_lists) do + table.sort(to_sort) + replace_enchanted_books(to_sort) + end +end) + +local function filter_item(name, description, lang, filter) + local desc + if not lang then + desc = string.lower(description) + else + desc = string.lower(minetest.get_translated_string(lang, description)) + end + return string.find(name, filter) or string.find(desc, filter) +end + +local function set_inv_search(filter, player) + local playername = player:get_player_name() + local inv = minetest.get_inventory({type="detached", name="creative_"..playername}) + local creative_list = {} + local lang = minetest.get_player_information(playername).lang_code + for name,def in pairs(minetest.registered_items) do + if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) and def.description and def.description ~= "" then + if filter_item(string.lower(def.name), def.description, lang, filter) then + table.insert(creative_list, name) + end + end + end + for ench, def in pairs(mcl_enchanting.enchantments) do + for i = 1, def.max_level do + local stack = mcl_enchanting.enchant(ItemStack("mcl_enchanting:book_enchanted"), ench, i) + if filter_item("mcl_enchanting:book_enchanted", minetest.strip_colors(stack:get_description()), lang, filter) then + table.insert(creative_list, "mcl_enchanting:book_enchanted " .. ench .. " " .. i) + end + end + end + table.sort(creative_list) + replace_enchanted_books(creative_list) + + inv:set_size("main", #creative_list) + inv:set_list("main", creative_list) +end + +local function set_inv_page(page, player) + local playername = player:get_player_name() + local inv = minetest.get_inventory({type="detached", name="creative_"..playername}) + inv:set_size("main", 0) + local creative_list = {} + if inventory_lists[page] then -- Standard filter + creative_list = inventory_lists[page] + end + inv:set_size("main", #creative_list) + inv:set_list("main", creative_list) +end + +local function init(player) + local playername = player:get_player_name() + minetest.create_detached_inventory("creative_"..playername, { + allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) + if minetest.is_creative_enabled(playername) then + return count + else + return 0 + end + end, + allow_put = function(inv, listname, index, stack, player) + return 0 + end, + allow_take = function(inv, listname, index, stack, player) + if minetest.is_creative_enabled(player:get_player_name()) then + return -1 + else + return 0 + end + end, + }, playername) + set_inv_page("all", player) +end + +-- Create the trash field +local trash = minetest.create_detached_inventory("trash", { + allow_put = function(inv, listname, index, stack, player) + if minetest.is_creative_enabled(player:get_player_name()) then + return stack:get_count() + else + return 0 + end + end, + on_put = function(inv, listname, index, stack, player) + inv:set_stack(listname, index, "") + end, +}) +trash:set_size("main", 1) + +local noffset = {} -- numeric tab offset +local offset = {} -- string offset: +local boffset = {} -- +local hoch = {} +local filtername = {} +--local bg = {} + +local noffset_x_start = -0.24 +local noffset_x = noffset_x_start +local noffset_y = -0.25 +local function next_noffset(id, right) + if right then + noffset[id] = { 8.94, noffset_y } + else + noffset[id] = { noffset_x, noffset_y } + noffset_x = noffset_x + 1.25 + end +end + +-- Upper row +next_noffset("blocks") +next_noffset("deco") +next_noffset("redstone") +next_noffset("rail") +next_noffset("brew") +next_noffset("misc") +next_noffset("nix", true) + +noffset_x = noffset_x_start +noffset_y = 8.12 + +-- Lower row +next_noffset("food") +next_noffset("tools") +next_noffset("combat") +next_noffset("mobs") +next_noffset("matr") +next_noffset("inv", true) + +for k,v in pairs(noffset) do + offset[k] = tostring(v[1]) .. "," .. tostring(v[2]) + boffset[k] = tostring(v[1]+0.19) .. "," .. tostring(v[2]+0.25) +end + +hoch["blocks"] = "" +hoch["deco"] = "" +hoch["redstone"] = "" +hoch["rail"] = "" +hoch["brew"] = "" +hoch["misc"] = "" +hoch["nix"] = "" +hoch["default"] = "" +hoch["food"] = "_down" +hoch["tools"] = "_down" +hoch["combat"] = "_down" +hoch["mobs"] = "_down" +hoch["matr"] = "_down" +hoch["inv"] = "_down" + +filtername["blocks"] = S("Building Blocks") +filtername["deco"] = S("Decoration Blocks") +filtername["redstone"] = S("Redstone") +filtername["rail"] = S("Transportation") +filtername["misc"] = S("Miscellaneous") +filtername["nix"] = S("Search Items") +filtername["food"] = S("Foodstuffs") +filtername["tools"] = S("Tools") +filtername["combat"] = S("Combat") +filtername["mobs"] = S("Mobs") +filtername["brew"] = S("Brewing") +filtername["matr"] = S("Materials") +filtername["inv"] = S("Survival Inventory") + +--local dark_bg = "crafting_creative_bg_dark.png" + +--[[local function reset_menu_item_bg() + bg["blocks"] = dark_bg + bg["deco"] = dark_bg + bg["redstone"] = dark_bg + bg["rail"] = dark_bg + bg["misc"] = dark_bg + bg["nix"] = dark_bg + bg["food"] = dark_bg + bg["tools"] = dark_bg + bg["combat"] = dark_bg + bg["mobs"] = dark_bg + bg["brew"] = dark_bg + bg["matr"] = dark_bg + bg["inv"] = dark_bg + bg["default"] = dark_bg +end]] + + +function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, show, page, filter) + --reset_menu_item_bg() + pagenum = math.floor(pagenum) or 1 + + local playername = player:get_player_name() + + if not inv_size then + if page == "nix" then + local inv = minetest.get_inventory({type="detached", name="creative_"..playername}) + inv_size = inv:get_size("main") + elseif page and page ~= "inv" then + inv_size = #(inventory_lists[page]) + else + inv_size = 0 + end + end + local pagemax = math.max(1, math.floor((inv_size-1) / (9*5) + 1)) + local name = "nix" + local main_list + local listrings = "listring[detached:creative_"..playername..";main]".. + "listring[current_player;main]".. + "listring[detached:trash;main]" + + if page then + name = page + if players[playername] then + players[playername].page = page + end + end + --bg[name] = "crafting_creative_bg.png" + + local inv_bg = "crafting_inventory_creative.png" + if name == "inv" then + inv_bg = "crafting_inventory_creative_survival.png" + + -- Show armor and player image + local player_preview + if minetest.settings:get_bool("3d_player_preview", true) then + player_preview = mcl_player.get_player_formspec_model(player, 3.9, 1.4, 1.2333, 2.4666, "") + else + player_preview = "image[3.9,1.4;1.2333,2.4666;"..mcl_player.player_get_preview(player).."]" + end + + -- Background images for armor slots (hide if occupied) + local armor_slot_imgs = "" + local inv = player:get_inventory() + if inv:get_stack("armor", 2):is_empty() then + armor_slot_imgs = armor_slot_imgs .. "image[2.5,1.3;1,1;mcl_inventory_empty_armor_slot_helmet.png]" + end + if inv:get_stack("armor", 3):is_empty() then + armor_slot_imgs = armor_slot_imgs .. "image[2.5,2.75;1,1;mcl_inventory_empty_armor_slot_chestplate.png]" + end + if inv:get_stack("armor", 4):is_empty() then + armor_slot_imgs = armor_slot_imgs .. "image[5.5,1.3;1,1;mcl_inventory_empty_armor_slot_leggings.png]" + end + if inv:get_stack("armor", 5):is_empty() then + armor_slot_imgs = armor_slot_imgs .. "image[5.5,2.75;1,1;mcl_inventory_empty_armor_slot_boots.png]" + end + + -- Survival inventory slots + main_list = "list[current_player;main;0,3.75;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,3.75,9,3).. + -- armor + "list[current_player;armor;2.5,1.3;1,1;1]".. + "list[current_player;armor;2.5,2.75;1,1;2]".. + "list[current_player;armor;5.5,1.3;1,1;3]".. + "list[current_player;armor;5.5,2.75;1,1;4]".. + mcl_formspec.get_itemslot_bg(2.5,1.3,1,1).. + mcl_formspec.get_itemslot_bg(2.5,2.75,1,1).. + mcl_formspec.get_itemslot_bg(5.5,1.3,1,1).. + mcl_formspec.get_itemslot_bg(5.5,2.75,1,1).. + armor_slot_imgs.. + -- player preview + player_preview.. + -- crafting guide button + "image_button[9,1;1,1;craftguide_book.png;__mcl_craftguide;]".. + "tooltip[__mcl_craftguide;"..F(S("Recipe book")).."]".. + -- help button + "image_button[9,2;1,1;doc_button_icon_lores.png;__mcl_doc;]".. + "tooltip[__mcl_doc;"..F(S("Help")).."]".. + -- skins button + "image_button[9,3;1,1;mcl_skins_button.png;__mcl_skins;]".. + "tooltip[__mcl_skins;"..F(S("Select player skin")).."]".. + -- achievements button + "image_button[9,4;1,1;mcl_achievements_button.png;__mcl_achievements;]".. + --"style_type[image_button;border=;bgimg=;bgimg_pressed=]".. + "tooltip[__mcl_achievements;"..F(S("Achievements")).."]" + + -- For shortcuts + listrings = listrings .. + "listring[detached:"..playername.."_armor;armor]".. + "listring[current_player;main]" + else + -- Creative inventory slots + main_list = "list[detached:creative_"..playername..";main;0,1.75;9,5;"..tostring(start_i).."]".. + mcl_formspec.get_itemslot_bg(0,1.75,9,5).. + -- Page buttons + "label[9.0,5.5;"..F(S("@1/@2", pagenum, pagemax)).."]".. + "image_button[9.0,6.0;0.7,0.7;crafting_creative_prev.png;creative_prev;]".. + "image_button[9.5,6.0;0.7,0.7;crafting_creative_next.png;creative_next;]" + end + + local tab_icon = { + blocks = "mcl_core:brick_block", + deco = "mcl_flowers:peony", + redstone = "mesecons:redstone", + rail = "mcl_minecarts:golden_rail", + misc = "mcl_buckets:bucket_lava", + nix = "mcl_compass:compass", + food = "mcl_core:apple", + tools = "mcl_core:axe_iron", + combat = "mcl_core:sword_gold", + mobs = "mobs_mc:cow", + brew = "mcl_potions:dragon_breath", + matr = "mcl_core:stick", + inv = "mcl_chests:chest", + } + local function tab(current_tab, this_tab) + local bg_img + if current_tab == this_tab then + bg_img = "crafting_creative_active"..hoch[this_tab]..".png" + else + bg_img = "crafting_creative_inactive"..hoch[this_tab]..".png" + end + return + "style["..this_tab..";border=false;bgimg=;bgimg_pressed=]".. + "item_image_button[" .. boffset[this_tab] ..";1,1;"..tab_icon[this_tab]..";"..this_tab..";]".. + "image[" .. offset[this_tab] .. ";1.5,1.44;" .. bg_img .. "]" + end + local caption = "" + if name ~= "inv" and filtername[name] then + caption = "label[0,1.2;"..F(minetest.colorize("#313131", filtername[name])).."]" + end + + local formspec = "size[10,9.3]".. + "no_prepend[]".. + mcl_vars.gui_nonbg..mcl_vars.gui_bg_color.. + "background[-0.19,-0.25;10.5,9.87;"..inv_bg.."]".. + "label[-5,-5;"..name.."]".. + tab(name, "blocks") .. + "tooltip[blocks;"..F(filtername["blocks"]).."]".. + tab(name, "deco") .. + "tooltip[deco;"..F(filtername["deco"]).."]".. + tab(name, "redstone") .. + "tooltip[redstone;"..F(filtername["redstone"]).."]".. + tab(name, "rail") .. + "tooltip[rail;"..F(filtername["rail"]).."]".. + tab(name, "misc") .. + "tooltip[misc;"..F(filtername["misc"]).."]".. + tab(name, "nix") .. + "tooltip[nix;"..F(filtername["nix"]).."]".. + caption.. + "list[current_player;main;0,7;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7,9,1).. + main_list.. + tab(name, "food") .. + "tooltip[food;"..F(filtername["food"]).."]".. + tab(name, "tools") .. + "tooltip[tools;"..F(filtername["tools"]).."]".. + tab(name, "combat") .. + "tooltip[combat;"..F(filtername["combat"]).."]".. + tab(name, "mobs") .. + "tooltip[mobs;"..F(filtername["mobs"]).."]".. + tab(name, "brew") .. + "tooltip[brew;"..F(filtername["brew"]).."]".. + tab(name, "matr") .. + "tooltip[matr;"..F(filtername["matr"]).."]".. + tab(name, "inv") .. + "tooltip[inv;"..F(filtername["inv"]).."]".. + "list[detached:trash;main;9,7;1,1;]".. + mcl_formspec.get_itemslot_bg(9,7,1,1).. + "image[9,7;1,1;crafting_creative_trash.png]".. + listrings + + if name == "nix" then + if filter == nil then + filter = "" + end + formspec = formspec .. "field[5.3,1.34;4,0.75;search;;"..minetest.formspec_escape(filter).."]" + formspec = formspec .. "field_close_on_enter[search;false]" + end + if pagenum then formspec = formspec .. "p"..tostring(pagenum) end + player:set_inventory_formspec(formspec) +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + local page = nil + + if not minetest.is_creative_enabled(player:get_player_name()) then + return + end + if formname ~= "" or fields.quit == "true" then + -- No-op if formspec closed or not player inventory (formname == "") + return + end + + local name = player:get_player_name() + + if fields.blocks then + if players[name].page == "blocks" then return end + set_inv_page("blocks",player) + page = "blocks" + elseif fields.deco then + if players[name].page == "deco" then return end + set_inv_page("deco",player) + page = "deco" + elseif fields.redstone then + if players[name].page == "redstone" then return end + set_inv_page("redstone",player) + page = "redstone" + elseif fields.rail then + if players[name].page == "rail" then return end + set_inv_page("rail",player) + page = "rail" + elseif fields.misc then + if players[name].page == "misc" then return end + set_inv_page("misc",player) + page = "misc" + elseif fields.nix then + set_inv_page("all",player) + page = "nix" + elseif fields.food then + if players[name].page == "food" then return end + set_inv_page("food",player) + page = "food" + elseif fields.tools then + if players[name].page == "tools" then return end + set_inv_page("tools",player) + page = "tools" + elseif fields.combat then + if players[name].page == "combat" then return end + set_inv_page("combat",player) + page = "combat" + elseif fields.mobs then + if players[name].page == "mobs" then return end + set_inv_page("mobs",player) + page = "mobs" + elseif fields.brew then + if players[name].page == "brew" then return end + set_inv_page("brew",player) + page = "brew" + elseif fields.matr then + if players[name].page == "matr" then return end + set_inv_page("matr",player) + page = "matr" + elseif fields.inv then + if players[name].page == "inv" then return end + page = "inv" + elseif fields.search == "" and not fields.creative_next and not fields.creative_prev then + set_inv_page("all", player) + page = "nix" + elseif fields.search and not fields.creative_next and not fields.creative_prev then + set_inv_search(string.lower(fields.search),player) + page = "nix" + end + + if page then + players[name].page = page + end + if players[name].page then + page = players[name].page + end + + -- Figure out current scroll bar from formspec + --local formspec = player:get_inventory_formspec() + + local start_i = players[name].start_i + + if fields.creative_prev then + start_i = start_i - 9*5 + elseif fields.creative_next then + start_i = start_i + 9*5 + else + -- Reset scroll bar if not scrolled + start_i = 0 + end + if start_i < 0 then + start_i = start_i + 9*5 + end + + local inv_size + if page == "nix" then + local inv = minetest.get_inventory({type="detached", name="creative_"..name}) + inv_size = inv:get_size("main") + elseif page and page ~= "inv" then + inv_size = #(inventory_lists[page]) + else + inv_size = 0 + end + + if start_i >= inv_size then + start_i = start_i - 9*5 + end + if start_i < 0 or start_i >= inv_size then + start_i = 0 + end + players[name].start_i = start_i + + local filter = "" + if not fields.nix and fields.search and fields.search ~= "" then + filter = fields.search + players[name].filter = filter + end + + mcl_inventory.set_creative_formspec(player, start_i, start_i / (9*5) + 1, inv_size, false, page, filter) +end) + + +if minetest.is_creative_enabled("") then + minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack) + -- Place infinite nodes, except for shulker boxes + local group = minetest.get_item_group(itemstack:get_name(), "shulker_box") + return group == 0 or group == nil + end) + + function minetest.handle_node_drops(pos, drops, digger) + if not digger or not digger:is_player() then + for _,item in ipairs(drops) do + minetest.add_item(pos, item) + end + end + local inv = digger:get_inventory() + if inv then + for _,item in ipairs(drops) do + if not inv:contains_item("main", item, true) then + inv:add_item("main", item) + end + end + end + end + + mcl_inventory.update_inventory_formspec = function(player) + local page + + local name = player:get_player_name() + + if players[name].page then + page = players[name].page + else + page = "nix" + end + + -- Figure out current scroll bar from formspec + --local formspec = player:get_inventory_formspec() + local start_i = players[name].start_i + + local inv_size + if page == "nix" then + local inv = minetest.get_inventory({type="detached", name="creative_"..name}) + inv_size = inv:get_size("main") + elseif page and page ~= "inv" then + inv_size = #(inventory_lists[page]) + else + inv_size = 0 + end + + local filter = players[name].filter + if filter == nil then + filter = "" + end + + mcl_inventory.set_creative_formspec(player, start_i, start_i / (9*5) + 1, inv_size, false, page, filter) + end +end + +minetest.register_on_joinplayer(function(player) + -- Initialize variables and inventory + local name = player:get_player_name() + if not players[name] then + players[name] = {} + players[name].page = "nix" + players[name].filter = "" + players[name].start_i = 0 + end + init(player) + mcl_inventory.set_creative_formspec(player, 0, 1, nil, false, "nix", "") +end) From 28b73042114ae4a7f1077d41d1e0cff8d224be64 Mon Sep 17 00:00:00 2001 From: NO11 Date: Tue, 2 Nov 2021 22:55:49 +0100 Subject: [PATCH 153/271] Break minecart it's near a cactus (Fix #924) --- mods/ENTITIES/mcl_minecarts/init.lua | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_minecarts/init.lua b/mods/ENTITIES/mcl_minecarts/init.lua index 4d3873cc2..119a13523 100644 --- a/mods/ENTITIES/mcl_minecarts/init.lua +++ b/mods/ENTITIES/mcl_minecarts/init.lua @@ -198,7 +198,20 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick, o else self._last_float_check = self._last_float_check + dtime end - local pos, rou_pos, node + + local pos, rou_pos, node = self.object:get_pos() + local r = 0.6 + for _, node_pos in pairs({{r, 0}, {0, r}, {-r, 0}, {0, -r}}) do + if minetest.get_node(vector.offset(pos, node_pos[1], 0, node_pos[2])).name == "mcl_core:cactus" then + detach_driver(self) + for d = 1, #drop do + minetest.add_item(pos, drop[d]) + end + self.object:remove() + return + end + end + -- Drop minecart if it isn't on a rail anymore if self._last_float_check >= mcl_minecarts.check_float_time then pos = self.object:get_pos() From db696d0e2b41e41c5859c0748a046144c3cf5981 Mon Sep 17 00:00:00 2001 From: Artem Arbatsky Date: Fri, 24 Sep 2021 16:50:54 +0500 Subject: [PATCH 154/271] Add missing call for on_die function --- mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua index 45e46d3db..03e6789ed 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua @@ -122,7 +122,10 @@ mobs.death_logic = function(self, dtime) if self.death_animation_timer >= 1.25 then item_drop(self,false,1) mobs.death_effect(self) - mcl_experience.throw_experience(self.object:get_pos(), math_random(self.xp_min, self.xp_max)) + mcl_experience.throw_experience(self.object:get_pos(), math_random(self.xp_min, self.xp_max)) + if self.on_die then + self.on_die(self, self.object:get_pos()) + end self.object:remove() return end @@ -155,4 +158,4 @@ mobs.death_logic = function(self, dtime) if self.pause_timer <= 0 then mobs.set_velocity(self,0) end -end \ No newline at end of file +end From 2607d40f1fcb4680f324aea4ad733fbe48a0fbfa Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Sat, 17 Jul 2021 07:23:20 +0200 Subject: [PATCH 155/271] Add script to show packets count from debug logs Mineclonia has inherited mods from MineClone 2 that send a lot of network packets. This behaviour wastes bandwith and is most likely a major reason for the unusually high amount of lag that MineClone2 and Mineclonia have. Many network packets that are sent by Mineclonia are entirely useless. Analyzing minetest log files to figure out what kind of packets are sent and how often is a first step in getting rid of useless traffic. --- tools/analyze-packet-spam | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 tools/analyze-packet-spam diff --git a/tools/analyze-packet-spam b/tools/analyze-packet-spam new file mode 100755 index 000000000..310616fd9 --- /dev/null +++ b/tools/analyze-packet-spam @@ -0,0 +1,60 @@ +#!/bin/sh -eu +# analyze-packet-spam – show minetest client packet count per second +# Copyright © 2021 Nils Dagsson Moskopp (erlehmann) + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# Dieses Programm hat das Ziel, die Medienkompetenz der Leser zu +# steigern. Gelegentlich packe ich sogar einen handfesten Buffer +# Overflow oder eine Format String Vulnerability zwischen die anderen +# Codezeilen und schreibe das auch nicht dran. + +# This script takes a minetest log with at least INFO log level and +# outputs the MINETEST network protocol packet count per second. + +# To collect such a log file of minetest running for 10 minutes, run: +# timeout 600 minetest --info >log.txt 2>&1 >/dev/null + +# To get packet counts from that file, run: +# ./analyze-packet-spam "${TEMPFILE}" + +TIMESTAMP_START=$( <"${TEMPFILE}" head -n1 |cut -d' ' -f1 ) +TIMESTAMP_END=$( <"${TEMPFILE}" tail -n1 |cut -d' ' -f1 ) +DURATION=$(( 30 + ${TIMESTAMP_END} - ${TIMESTAMP_START} )) + +PACKET_NAME_SEEN='' +<"${TEMPFILE}" tac \ + |while read _ PACKET_NAME PACKET_COUNT; do + case "${PACKET_NAME_SEEN}" in + *"${PACKET_NAME}"*) + ;; + *) + PACKET_COUNT_PER_SECOND=$( + printf '1k %s %s /p' "${PACKET_COUNT}" "${DURATION}" \ + |dc + ) + printf '%s\t%s\n' "${PACKET_COUNT_PER_SECOND}" "${PACKET_NAME}" + PACKET_NAME_SEEN="${PACKET_NAME_SEEN} ${PACKET_NAME}" + ;; + esac + done + +unlink "${TEMPFILE}" From 148575a05b8d0204155e0d5ce4cf1dcd45490f19 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 16:28:13 +0100 Subject: [PATCH 156/271] Remove unused hud_manager.hud_exists function --- mods/HUD/mcl_experience/init.lua | 9 --------- 1 file changed, 9 deletions(-) diff --git a/mods/HUD/mcl_experience/init.lua b/mods/HUD/mcl_experience/init.lua index e514ffc19..b7175ccfb 100644 --- a/mods/HUD/mcl_experience/init.lua +++ b/mods/HUD/mcl_experience/init.lua @@ -116,15 +116,6 @@ function hud_manager.change_hud(data) end end --- gets if hud exists -function hud_manager.hud_exists(player,hud_name) - local name = player:get_player_name() - if player_huds[name] and player_huds[name][hud_name] then - return true - else - return false - end -end ------------------- -- saves specific users data for when they relog From a4e73886d566d2718ed6700731dd57198faa5744 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 19:36:57 +0100 Subject: [PATCH 157/271] Rework XP API --- mods/ENTITIES/mcl_item_entity/init.lua | 4 +- .../api/mob_functions/death_logic.lua | 4 +- mods/ENTITIES/mobs_mc/ender_dragon.lua | 2 +- mods/HUD/mcl_experience/bottle.lua | 63 ++ mods/HUD/mcl_experience/command.lua | 39 + mods/HUD/mcl_experience/init.lua | 723 ++++-------------- mods/HUD/mcl_experience/orb.lua | 220 ++++++ .../{experience.ogg => mcl_experience.ogg} | Bin ...vel_up.ogg => mcl_experience_level_up.ogg} | Bin ...erience_bar.png => mcl_experience_bar.png} | Bin ....png => mcl_experience_bar_background.png} | Bin ...erience_orb.png => mcl_experience_orb.png} | Bin mods/ITEMS/mcl_enchanting/enchantments.lua | 43 ++ mods/ITEMS/mcl_enchanting/engine.lua | 6 +- mods/ITEMS/mcl_fishing/init.lua | 6 +- mods/ITEMS/mcl_furnaces/init.lua | 4 +- mods/ITEMS/mcl_mobspawners/init.lua | 2 +- 17 files changed, 538 insertions(+), 578 deletions(-) create mode 100644 mods/HUD/mcl_experience/bottle.lua create mode 100644 mods/HUD/mcl_experience/command.lua create mode 100644 mods/HUD/mcl_experience/orb.lua rename mods/HUD/mcl_experience/sounds/{experience.ogg => mcl_experience.ogg} (100%) rename mods/HUD/mcl_experience/sounds/{level_up.ogg => mcl_experience_level_up.ogg} (100%) rename mods/HUD/mcl_experience/textures/{experience_bar.png => mcl_experience_bar.png} (100%) rename mods/HUD/mcl_experience/textures/{experience_bar_background.png => mcl_experience_bar_background.png} (100%) rename mods/HUD/mcl_experience/textures/{experience_orb.png => mcl_experience_orb.png} (100%) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index cfd141f04..678f8e2b7 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -290,10 +290,10 @@ function minetest.handle_node_drops(pos, drops, digger) end end - if digger and mcl_experience.throw_experience and not silk_touch_drop then + if digger and mcl_experience.throw_xp and not silk_touch_drop then local experience_amount = minetest.get_item_group(dug_node.name,"xp") if experience_amount > 0 then - mcl_experience.throw_experience(pos, experience_amount) + mcl_experience.throw_xp(pos, experience_amount) end end diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua index 45e46d3db..27d0030ea 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua @@ -122,7 +122,7 @@ mobs.death_logic = function(self, dtime) if self.death_animation_timer >= 1.25 then item_drop(self,false,1) mobs.death_effect(self) - mcl_experience.throw_experience(self.object:get_pos(), math_random(self.xp_min, self.xp_max)) + mcl_experience.throw_xp(self.object:get_pos(), math_random(self.xp_min, self.xp_max)) self.object:remove() return end @@ -155,4 +155,4 @@ mobs.death_logic = function(self, dtime) if self.pause_timer <= 0 then mobs.set_velocity(self,0) end -end \ No newline at end of file +end diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index bafb3f84a..3634e20f4 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -103,7 +103,7 @@ mobs:register_mob("mobs_mc:enderdragon", { mcl_portals.spawn_gateway_portal() mcl_structures.call_struct(self._portal_pos, "end_exit_portal_open") if self._initial then - mcl_experience.throw_experience(pos, 11500) -- 500 + 11500 = 12000 + mcl_experience.throw_xp(pos, 11500) -- 500 + 11500 = 12000 minetest.set_node(vector.add(self._portal_pos, vector.new(3, 5, 3)), {name = mobs_mc.items.dragon_egg}) end end diff --git a/mods/HUD/mcl_experience/bottle.lua b/mods/HUD/mcl_experience/bottle.lua new file mode 100644 index 000000000..10e42a57d --- /dev/null +++ b/mods/HUD/mcl_experience/bottle.lua @@ -0,0 +1,63 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +minetest.register_entity("mcl_experience:bottle",{ + textures = {"mcl_experience_bottle.png"}, + hp_max = 1, + visual_size = {x = 0.35, y = 0.35}, + collisionbox = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1}, + pointable = false, + on_step = function(self, dtime) + local pos = self.object:get_pos() + local node = minetest.get_node(pos) + local n = node.name + if n ~= "air" and n ~= "mcl_portals:portal" and n ~= "mcl_portals:portal_end" and minetest.get_item_group(n, "liquid") == 0 then + minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1}) + mcl_experience.throw_xp(pos, math.random(3, 11)) + minetest.add_particlespawner({ + amount = 50, + time = 0.1, + minpos = vector.add(pos, vector.new(-0.1, 0.5, -0.1)), + maxpos = vector.add(pos, vector.new( 0.1, 0.6, 0.1)), + minvel = vector.new(-2, 0, -2), + maxvel = vector.new( 2, 2, 2), + minacc = vector.new(0, 0, 0), + maxacc = vector.new(0, 0, 0), + minexptime = 0.5, + maxexptime = 1.25, + minsize = 1, + maxsize = 2, + collisiondetection = true, + vertical = false, + texture = "mcl_particles_effect.png^[colorize:blue:127", + }) + self.object:remove() + end + end, +}) + +local function throw_xp_bottle(pos, dir, velocity) + minetest.sound_play("mcl_throwing_throw", {pos = pos, gain = 0.4, max_hear_distance = 16}, true) + local obj = minetest.add_entity(pos, "mcl_experience:bottle") + obj:set_velocity(vector.multiply(dir, velocity)) + local acceleration = vector.multiply(dir, -3) + acceleration.y = -9.81 + obj:set_acceleration(acceleration) +end + +minetest.register_craftitem("mcl_experience:bottle", { + description = "Bottle o' Enchanting", + inventory_image = "mcl_experience_bottle.png", + wield_image = "mcl_experience_bottle.png", + stack_max = 64, + on_use = function(itemstack, placer, pointed_thing) + throw_xp_bottle(vector.add(placer:get_pos(), vector.new(0, 1.5, 0)), placer:get_look_dir(), 10) + if not minetest.is_creative_enabled(placer:get_player_name()) then + itemstack:take_item() + end + return itemstack + end, + _on_dispense = function(_, pos, _, _, dir) + throw_xp_bottle(vector.add(pos, vector.multiply(dir, 0.51)), dir, 10) + end +}) + diff --git a/mods/HUD/mcl_experience/command.lua b/mods/HUD/mcl_experience/command.lua new file mode 100644 index 000000000..040031b5a --- /dev/null +++ b/mods/HUD/mcl_experience/command.lua @@ -0,0 +1,39 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +minetest.register_chatcommand("xp", { + params = S("[[] ]"), + description = S("Gives a player some XP"), + privs = {server=true}, + func = function(name, params) + local player, xp = nil, 1000 + local P, i = {}, 0 + for str in string.gmatch(params, "([^ ]+)") do + i = i + 1 + P[i] = str + end + if i > 2 then + return false, S("Error: Too many parameters!") + end + if i > 0 then + xp = tonumber(P[i]) + end + if i < 2 then + player = minetest.get_player_by_name(name) + end + if i == 2 then + player = minetest.get_player_by_name(P[1]) + end + + if not xp then + return false, S("Error: Incorrect value of XP") + end + + if not player then + return false, S("Error: Player not found") + end + + mcl_experience.add_xp(player, xp) + + return true, S("Added @1 XP to @2, total: @3, experience level: @4", tostring(xp), player:get_player_name(), tostring(mcl_experience.get_xp(player)), tostring(mcl_experience.get_level(player))) + end, +}) diff --git a/mods/HUD/mcl_experience/init.lua b/mods/HUD/mcl_experience/init.lua index b7175ccfb..aea805fa2 100644 --- a/mods/HUD/mcl_experience/init.lua +++ b/mods/HUD/mcl_experience/init.lua @@ -1,632 +1,227 @@ -local S = minetest.get_translator(minetest.get_current_modname()) - -mcl_experience = {} - -local vector = vector -local math = math -local string = string - -local pool = {} -local registered_nodes -local max_xp = 2^31-1 -local max_orb_age = 300 -- seconds - -local gravity = {x = 0, y = -((tonumber(minetest.settings:get("movement_gravity"))) or 9.81), z = 0} -local size_min, size_max = 20, 59 -- percents -local delta_size = size_max - size_min -local size_to_xp = { - {-32768, 2}, -- 1 - { 3, 6}, -- 2 - { 7, 16}, -- 3 - { 17, 36}, -- 4 - { 37, 72}, -- 5 - { 73, 148}, -- 6 - { 149, 306}, -- 7 - { 307, 616}, -- 8 - { 617, 1236}, -- 9 - { 1237, 2476}, --10 - { 2477, 32767} --11 +mcl_experience = { + on_add_xp = {}, } -local function xp_to_size(xp) - local i, l = 1, #size_to_xp - while (xp > size_to_xp[i][1]) and (i < l) do - i = i + 1 - end - return ((i-1) / (l-1) * delta_size + size_min)/100 -end +local modpath = minetest.get_modpath(minetest.get_current_modname()) -minetest.register_on_mods_loaded(function() - registered_nodes = minetest.registered_nodes -end) +dofile(modpath .. "/command.lua") +dofile(modpath .. "/orb.lua") +dofile(modpath .. "/bottle.lua") -local function load_data(player) - local name = player:get_player_name() - pool[name] = {} - local temp_pool = pool[name] - local meta = player:get_meta() - temp_pool.xp = meta:get_int("xp") or 0 - temp_pool.level = mcl_experience.xp_to_level(temp_pool.xp) - temp_pool.bar, temp_pool.bar_step, temp_pool.xp_next_level = mcl_experience.xp_to_bar(temp_pool.xp, temp_pool.level) - temp_pool.last_time= minetest.get_us_time()/1000000 -end +-- local storage --- saves data to be utilized on next login -local function save_data(player) - local name = player:get_player_name() - local temp_pool = pool[name] - local meta = player:get_meta() - meta:set_int("xp", temp_pool.xp) - pool[name] = nil -end +local hud_bars = {} +local hud_levels = {} +local caches = {} -local player_huds = {} -- the list of players hud lists (3d array) -hud_manager = {} -- hud manager class +-- helpers --- terminate the player's list on leave -minetest.register_on_leaveplayer(function(player) - local name = player:get_player_name() - player_huds[name] = nil -end) - --- create instance of new hud -function hud_manager.add_hud(player,hud_name,def) - local name = player:get_player_name() - if minetest.is_creative_enabled(name) then - return - end - local local_hud = player:hud_add({ - hud_elem_type = def.hud_elem_type, - position = def.position, - text = def.text, - text2 = def.text2, - number = def.number, - item = def.item, - direction = def.direction, - size = def.size, - offset = def.offset, - z_index = def.z_index, - alignment = def.alignment, - scale = def.scale, - }) - -- create new 3d array here - -- depends.txt is not needed - -- with it here - if not player_huds[name] then - player_huds[name] = {} - end - - player_huds[name][hud_name] = local_hud -end - --- delete instance of hud -function hud_manager.remove_hud(player,hud_name) - local name = player:get_player_name() - if player_huds[name] and player_huds[name][hud_name] then - player:hud_remove(player_huds[name][hud_name]) - player_huds[name][hud_name] = nil - end -end - --- change element of hud -function hud_manager.change_hud(data) - local name = data.player:get_player_name() - if player_huds[name] and player_huds[name][data.hud_name] then - data.player:hud_change(player_huds[name][data.hud_name], data.element, data.data) - end -end - -------------------- - --- saves specific users data for when they relog -minetest.register_on_leaveplayer(function(player) - save_data(player) -end) - --- is used for shutdowns to save all data -local function save_all() - for name,_ in pairs(pool) do - local player = minetest.get_player_by_name(name) - if player then - save_data(player) - end - end -end - --- save all data to mod storage on shutdown -minetest.register_on_shutdown(function() - save_all() -end) - - -function mcl_experience.get_player_xp_level(player) - local name = player:get_player_name() - return pool[name].level -end - -function mcl_experience.set_player_xp_level(player,level) - local name = player:get_player_name() - if level == pool[name].level then - return - end - pool[name].level = level - pool[name].xp, pool[name].bar_step, pool[name].xp_next_level = mcl_experience.bar_to_xp(pool[name].bar, level) - hud_manager.change_hud({player = player, hud_name = "xp_level", element = "text", data = tostring(level)}) - -- we may don't update the bar -end - -local name -local temp_pool -minetest.register_on_joinplayer(function(player) - - load_data(player) - - name = player:get_player_name() - temp_pool = pool[name] - - hud_manager.add_hud(player,"experience_bar", - { - hud_elem_type = "image", - name = "experience bar", - text = "experience_bar_background.png^[lowpart:" .. math.floor(temp_pool.bar / 36 * 100) .. ":experience_bar.png^[transformR270", - position = {x=0.5, y=1}, - offset = {x = (-9 * 28) - 3, y = -(48 + 24 + 16 - 5)}, - scale = {x = 2.8, y = 3.0}, - alignment = { x = 1, y = 1 }, - z_index = 11, - }) - - hud_manager.add_hud(player,"xp_level", - { - hud_elem_type = "text", position = {x=0.5, y=1}, - name = "xp_level", text = tostring(temp_pool.level), - number = 0x80FF20, - offset = {x = 0, y = -(48 + 24 + 24)}, - z_index = 12, - }) -end) - -function mcl_experience.xp_to_level(xp) +local function xp_to_level(xp) local xp = xp or 0 local a, b, c, D + if xp > 1507 then - a, b, c = 4.5, -162.5, 2220-xp + a, b, c = 4.5, -162.5, 2220 - xp elseif xp > 352 then - a, b, c = 2.5, -40.5, 360-xp + a, b, c = 2.5, -40.5, 360 - xp else a, b, c = 1, 6, -xp end - D = b*b-4*a*c + + D = b * b - 4 * a * c + if D == 0 then - return math.floor(-b/2/a) - elseif D > 0 then - local v1, v2 = -b/2/a, math.sqrt(D)/2/a - return math.floor((math.max(v1-v2, v1+v2))) + return math.floor(-b / 2 / a) + elseif D > 0 then + local v1, v2 = -b / 2 / a, math.sqrt(D) / 2 / a + return math.floor(math.max(v1 - v2, v1 + v2)) end + return 0 end -function mcl_experience.level_to_xp(level) - if (level >= 1 and level <= 16) then +local function level_to_xp(level) + if level >= 1 and level <= 16 then return math.floor(math.pow(level, 2) + 6 * level) - elseif (level >= 17 and level <= 31) then + elseif level >= 17 and level <= 31 then return math.floor(2.5 * math.pow(level, 2) - 40.5 * level + 360) elseif level >= 32 then - return math.floor(4.5 * math.pow(level, 2) - 162.5 * level + 2220); + return math.floor(4.5 * math.pow(level, 2) - 162.5 * level + 2220) end + return 0 end -function mcl_experience.xp_to_bar(xp, level) - local level = level or mcl_experience.xp_to_level(xp) - local xp_this_level = mcl_experience.level_to_xp(level) - local xp_next_level = mcl_experience.level_to_xp(level+1) - local bar_step = 36 / (xp_next_level-xp_this_level) - local bar = (xp-xp_this_level) * bar_step - return bar, bar_step, xp_next_level +local function calculate_bounds(level) + return level_to_xp(level), level_to_xp(level + 1) end -function mcl_experience.bar_to_xp(bar, level) - local xp_this_level = mcl_experience.level_to_xp(level) - local xp_next_level = mcl_experience.level_to_xp(level+1) - local bar_step = 36 / (xp_next_level-xp_this_level) - local xp = xp_this_level + math.floor(bar/36*(xp_next_level-xp_this_level)) - return xp, bar_step, xp_next_level +local function xp_to_bar(xp, level) + local xp_min, xp_max = calculate_bounds(level) + + return (xp - xp_min) / (xp_max - xp_min) end -function mcl_experience.add_experience(player, experience) - local name = player:get_player_name() - local temp_pool = pool[name] +local function bar_to_xp(bar, level) + local xp_min, xp_max = calculate_bounds(level) - local inv = player:get_inventory() - local candidates = { - {list = "main", index = player:get_wield_index()}, - {list = "armor", index = 2}, - {list = "armor", index = 3}, - {list = "armor", index = 4}, - {list = "armor", index = 5}, - } - local final_candidates = {} - for _, can in ipairs(candidates) do - local stack = inv:get_stack(can.list, can.index) - local wear = stack:get_wear() - if mcl_enchanting.has_enchantment(stack, "mending") and wear > 0 then - can.stack = stack - can.wear = wear - table.insert(final_candidates, can) - end - end - if #final_candidates > 0 then - local can = final_candidates[math.random(#final_candidates)] - local stack, list, index, wear = can.stack, can.list, can.index, can.wear - local uses = mcl_util.calculate_durability(stack) - local multiplier = 2 * 65535 / uses - local repair = experience * multiplier - local new_wear = wear - repair - if new_wear < 0 then - experience = math.floor(-new_wear / multiplier + 0.5) - new_wear = 0 - else - experience = 0 - end - stack:set_wear(math.floor(new_wear)) - inv:set_stack(list, index, stack) - end + return xp_min + bar * (xp_max - xp_min) +end - local old_bar, old_xp, old_level = temp_pool.bar, temp_pool.xp, temp_pool.level - temp_pool.xp = math.min(math.max(temp_pool.xp + experience, 0), max_xp) +local function get_time() + return minetest.get_us_time() / 1000000 +end - if (temp_pool.xp < temp_pool.xp_next_level) and (temp_pool.xp >= old_xp) then - temp_pool.bar = temp_pool.bar + temp_pool.bar_step * experience - else - temp_pool.level = mcl_experience.xp_to_level(temp_pool.xp) - temp_pool.bar, temp_pool.bar_step, temp_pool.xp_next_level = mcl_experience.xp_to_bar(temp_pool.xp, temp_pool.level) - end +-- api - if old_bar ~= temp_pool.bar then - hud_manager.change_hud({player = player, hud_name = "experience_bar", element = "text", data = "experience_bar_background.png^[lowpart:" .. math.floor(temp_pool.bar / 36 * 100) .. ":experience_bar.png^[transformR270",}) - end +function mcl_experience.get_level(player) + return caches[player].level +end - if experience > 0 and minetest.get_us_time()/1000000 - temp_pool.last_time > 0.01 then - if old_level ~= temp_pool.level then - minetest.sound_play("level_up",{gain=0.2,to_player = name}) - temp_pool.last_time = minetest.get_us_time()/1000000 + 0.2 - else - minetest.sound_play("experience",{gain=0.1,to_player = name,pitch=math.random(75,99)/100}) - temp_pool.last_time = minetest.get_us_time()/1000000 - end - end +function mcl_experience.set_level(player, level) + local cache = caches[player] - if old_level ~= temp_pool.level then - hud_manager.change_hud({player = player, hud_name = "xp_level", element = "text", data = tostring(temp_pool.level)}) + if level ~= cache.level then + mcl_experience.set_xp(player, math.floor(bar_to_xp(xp_to_bar(mcl_experience.get_xp(player), cache.level), level))) end end ---reset player level -local name -local temp_pool -local xp_amount -minetest.register_on_dieplayer(function(player) - if minetest.settings:get_bool("mcl_keepInventory", false) then - return - end +function mcl_experience.get_xp(player) + return player:get_meta():get_int("xp") +end - name = player:get_player_name() - temp_pool = pool[name] - xp_amount = temp_pool.xp +function mcl_experience.set_xp(player, xp) + player:get_meta():set_int("xp", xp) - temp_pool.xp = 0 - temp_pool.level = 0 - temp_pool.bar, temp_pool.bar_step, temp_pool.xp_next_level = mcl_experience.xp_to_bar(temp_pool.xp, temp_pool.level) + mcl_experience.update(player) +end - hud_manager.change_hud({player = player, hud_name = "xp_level", element = "text", data = tostring(temp_pool.level)}) - hud_manager.change_hud({player = player, hud_name = "experience_bar", element = "text", data = "experience_bar_background.png^[lowpart:" .. math.floor(temp_pool.bar / 36 * 100) .. ":experience_bar.png^[transformR270",}) +function mcl_experience.add_xp(player, xp) + for _, cb in ipairs(mcl_experience.on_add_xp) do + xp = cb.func(player, xp) or xp - mcl_experience.throw_experience(player:get_pos(), xp_amount) -end) - -local collector, pos, pos2 -local direction, distance, player_velocity, goal -local currentvel, acceleration, multiplier, velocity -local node, vel, def -local is_moving, is_slippery, slippery, slip_factor -local size -local function xp_step(self, dtime) - --if item set to be collected then only execute go to player - if self.collected == true then - if not self.collector then - self.collected = false - return - end - collector = minetest.get_player_by_name(self.collector) - if collector and collector:get_hp() > 0 and vector.distance(self.object:get_pos(),collector:get_pos()) < 7.25 then - self.object:set_acceleration(vector.new(0,0,0)) - self.disable_physics(self) - --get the variables - pos = self.object:get_pos() - pos2 = collector:get_pos() - - player_velocity = collector:get_velocity() or collector:get_player_velocity() - - pos2.y = pos2.y + 0.8 - - direction = vector.direction(pos,pos2) - distance = vector.distance(pos2,pos) - multiplier = distance - if multiplier < 1 then - multiplier = 1 - end - goal = vector.multiply(direction,multiplier) - currentvel = self.object:get_velocity() - - if distance > 1 then - multiplier = 20 - distance - velocity = vector.multiply(direction,multiplier) - goal = velocity - acceleration = vector.new(goal.x-currentvel.x,goal.y-currentvel.y,goal.z-currentvel.z) - self.object:add_velocity(vector.add(acceleration,player_velocity)) - elseif distance < 0.8 then - mcl_experience.add_experience(collector, self._xp) - self.object:remove() - end - return - else - self.collector = nil - self.enable_physics(self) + if xp == 0 then + break end end + local cache = caches[player] + local old_level = cache.level - self.age = self.age + dtime - if self.age > max_orb_age then - self.object:remove() - return - end + mcl_experience.set_xp(player, mcl_experience.get_xp(player) + xp) - pos = self.object:get_pos() + local current_time = get_time() - if pos then - node = minetest.get_node_or_nil({ - x = pos.x, - y = pos.y -0.25, - z = pos.z - }) - else - return - end + if current_time - cache.last_time > 0.01 then + local name = player:get_player_name() - -- Remove nodes in 'ignore' - if node and node.name == "ignore" then - self.object:remove() - return - end - - if not self.physical_state then - return -- Don't do anything - end - - -- Slide on slippery nodes - vel = self.object:get_velocity() - def = node and registered_nodes[node.name] - is_moving = (def and not def.walkable) or - vel.x ~= 0 or vel.y ~= 0 or vel.z ~= 0 - is_slippery = false - - if def and def.walkable then - slippery = minetest.get_item_group(node.name, "slippery") - is_slippery = slippery ~= 0 - if is_slippery and (math.abs(vel.x) > 0.2 or math.abs(vel.z) > 0.2) then - -- Horizontal deceleration - slip_factor = 4.0 / (slippery + 4) - self.object:set_acceleration({ - x = -vel.x * slip_factor, - y = 0, - z = -vel.z * slip_factor + if old_level == cache.level then + minetest.sound_play("mcl_experience", { + to_player = name, + gain = 0.1, + pitch = math.random(75, 99) / 100, }) - elseif vel.y == 0 then - is_moving = false + + cache.last_time = current_time + else + minetest.sound_play("mcl_experience_level_up", { + to_player = name, + gain = 0.2, + }) + + cache.last_time = current_time + 0.2 end end - - if self.moving_state == is_moving and self.slippery_state == is_slippery then - -- Do not update anything until the moving state changes - return - end - - self.moving_state = is_moving - self.slippery_state = is_slippery - - if is_moving then - self.object:set_acceleration(gravity) - else - self.object:set_acceleration({x = 0, y = 0, z = 0}) - self.object:set_velocity({x = 0, y = 0, z = 0}) - end end -minetest.register_entity("mcl_experience:orb", { - initial_properties = { - hp_max = 1, - physical = true, - collide_with_objects = false, - collisionbox = {-0.2, -0.2, -0.2, 0.2, 0.2, 0.2}, - visual = "sprite", - visual_size = {x = 0.4, y = 0.4}, - textures = {name="experience_orb.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0}}, - spritediv = {x = 1, y = 14}, - initial_sprite_basepos = {x = 0, y = 0}, - is_visible = true, - pointable = false, - static_save = false, - }, - moving_state = true, - slippery_state = false, - physical_state = true, - -- Item expiry - age = 0, - -- Pushing item out of solid nodes - force_out = nil, - force_out_start = nil, - --Collection Variables - collectable = false, - try_timer = 0, - collected = false, - delete_timer = 0, - radius = 4, - - - on_activate = function(self, staticdata, dtime_s) - self.object:set_velocity(vector.new( - math.random(-2,2)*math.random(), - math.random(2,5), - math.random(-2,2)*math.random() - )) - self.object:set_armor_groups({immortal = 1}) - self.object:set_velocity({x = 0, y = 2, z = 0}) - self.object:set_acceleration(gravity) - local xp = tonumber(staticdata) - self._xp = xp - size = xp_to_size(xp) - self.object:set_properties({ - visual_size = {x = size, y = size}, - glow = 14, - }) - self.object:set_sprite({x=1,y=math.random(1,14)}, 14, 0.05, false) - end, - - enable_physics = function(self) - if not self.physical_state then - self.physical_state = true - self.object:set_properties({physical = true}) - self.object:set_velocity({x=0, y=0, z=0}) - self.object:set_acceleration(gravity) - end - end, - - disable_physics = function(self) - if self.physical_state then - self.physical_state = false - self.object:set_properties({physical = false}) - self.object:set_velocity({x=0, y=0, z=0}) - self.object:set_acceleration({x=0, y=0, z=0}) - end - end, - on_step = function(self, dtime) - xp_step(self, dtime) - end, -}) - -minetest.register_chatcommand("xp", { - params = S("[[] ]"), - description = S("Gives a player some XP"), - privs = {server=true}, - func = function(name, params) - local player, xp = nil, 1000 - local P, i = {}, 0 - for str in string.gmatch(params, "([^ ]+)") do - i = i + 1 - P[i] = str - end - if i > 2 then - return false, S("Error: Too many parameters!") - end - if i > 0 then - xp = tonumber(P[i]) - end - if i < 2 then - player = minetest.get_player_by_name(name) - end - if i == 2 then - player = minetest.get_player_by_name(P[1]) - end - if not xp then - return false, S("Error: Incorrect value of XP") - end - if not player then - return false, S("Error: Player not found") - end - mcl_experience.add_experience(player, xp) - local playername = player:get_player_name() - minetest.chat_send_player(name, S("Added @1 XP to @2, total: @3, experience level: @4", tostring(xp), playername, tostring(pool[playername].xp), tostring(pool[playername].level))) - end, -}) - -function mcl_experience.throw_experience(pos, amount) +function mcl_experience.throw_xp(pos, total_xp) local i, j = 0, 0 - local obj, xp - while i < amount and j < 100 do - xp = math.min(math.random(1, math.min(32767, amount-math.floor(i/2))), amount-i) - obj = minetest.add_entity(pos, "mcl_experience:orb", tostring(xp)) + + while i < total_xp and j < 100 do + local xp = math.min(math.random(1, math.min(32767, total_xp - math.floor(i / 2))), total_xp - i) + local obj = minetest.add_entity(pos, "mcl_experience:orb", tostring(xp)) + if not obj then return false end - obj:set_velocity({ - x=math.random(-2,2)*math.random(), - y=math.random(2,5), - z=math.random(-2,2)*math.random() - }) + + obj:set_velocity(vector.new( + math.random(-2, 2) * math.random(), + math.random( 2, 5), + math.random(-2, 2) * math.random() + )) + i = i + xp j = j + 1 end end -minetest.register_entity("mcl_experience:bottle",{ - textures = {"mcl_experience_bottle.png"}, - hp_max = 1, - visual_size = {x = 0.35, y = 0.35}, - collisionbox = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1}, - pointable = false, - on_step = function(self, dtime) - local pos = self.object:get_pos() - local node = minetest.get_node(pos) - local n = node.name - if n ~= "air" and n ~= "mcl_portals:portal" and n ~= "mcl_portals:portal_end" and minetest.get_item_group(n, "liquid") == 0 then - minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1}) - mcl_experience.throw_experience(pos, math.random(3, 11)) - minetest.add_particlespawner({ - amount = 50, - time = 0.1, - minpos = vector.add(pos, vector.new(-0.1, 0.5, -0.1)), - maxpos = vector.add(pos, vector.new( 0.1, 0.6, 0.1)), - minvel = vector.new(-2, 0, -2), - maxvel = vector.new( 2, 2, 2), - minacc = vector.new(0, 0, 0), - maxacc = vector.new(0, 0, 0), - minexptime = 0.5, - maxexptime = 1.25, - minsize = 1, - maxsize = 2, - collisiondetection = true, - vertical = false, - texture = "mcl_particles_effect.png^[colorize:blue:127", - }) - self.object:remove() - end - end, -}) +function mcl_experience.update(player) + local xp = mcl_experience.get_xp(player) + local cache = caches[player] -local function throw_xp_bottle(pos, dir, velocity) - minetest.sound_play("mcl_throwing_throw", {pos = pos, gain = 0.4, max_hear_distance = 16}, true) - local obj = minetest.add_entity(pos, "mcl_experience:bottle") - obj:set_velocity(vector.multiply(dir, velocity)) - local acceleration = vector.multiply(dir, -3) - acceleration.y = -9.81 - obj:set_acceleration(acceleration) + cache.level = xp_to_level(xp) + + if not minetest.is_creative_enabled(player:get_player_name()) then + player:hud_change(hud_bars[player], "text", "mcl_experience_bar_background.png^[lowpart:" + .. math.floor(math.floor(xp_to_bar(xp, cache.level) * 18) / 18 * 100) + .. ":mcl_experience_bar.png^[transformR270" + ) + + if cache.level == 0 then + player:hud_change(hud_levels[player], "text", "") + else + player:hud_change(hud_levels[player], "text", tostring(cache.level)) + end + end end -minetest.register_craftitem("mcl_experience:bottle", { - description = "Bottle o' Enchanting", - inventory_image = "mcl_experience_bottle.png", - wield_image = "mcl_experience_bottle.png", - stack_max = 64, - on_use = function(itemstack, placer, pointed_thing) - throw_xp_bottle(vector.add(placer:get_pos(), vector.new(0, 1.5, 0)), placer:get_look_dir(), 10) - if not minetest.is_creative_enabled(placer:get_player_name()) then - itemstack:take_item() - end - return itemstack - end, - _on_dispense = function(_, pos, _, _, dir) - throw_xp_bottle(vector.add(pos, vector.multiply(dir, 0.51)), dir, 10) +function mcl_experience.register_on_add_xp(func, priority) + table.insert(mcl_experience.on_add_xp, {func = func, priority = priority or 0}) +end + +-- callbacks + +minetest.register_on_joinplayer(function(player) + caches[player] = { + last_time = get_time(), + } + + if not minetest.is_creative_enabled(player:get_player_name()) then + hud_bars[player] = player:hud_add({ + hud_elem_type = "image", + position = {x = 0.5, y = 1}, + offset = {x = (-9 * 28) - 3, y = -(48 + 24 + 16 - 5)}, + scale = {x = 2.8, y = 3.0}, + alignment = {x = 1, y = 1}, + z_index = 11, + }) + + hud_levels[player] = player:hud_add({ + hud_elem_type = "text", + position = {x = 0.5, y = 1}, + number = 0x80FF20, + offset = {x = 0, y = -(48 + 24 + 24)}, + z_index = 12, + }) end -}) + + mcl_experience.update(player) +end) + +minetest.register_on_leaveplayer(function(player) + hud_bars[player] = nil + hud_levels[player] = nil + caches[player] = nil +end) + +minetest.register_on_dieplayer(function(player) + if not minetest.settings:get_bool("mcl_keepInventory", false) then + mcl_experience.throw_xp(player:get_pos(), mcl_experience.get_xp(player)) + mcl_experience.set_xp(player, 0) + end +end) + +minetest.register_on_mods_loaded(function() + table.sort(mcl_experience.on_add_xp, function(a, b) return a.priority < b.priority end) +end) diff --git a/mods/HUD/mcl_experience/orb.lua b/mods/HUD/mcl_experience/orb.lua new file mode 100644 index 000000000..9aecce00d --- /dev/null +++ b/mods/HUD/mcl_experience/orb.lua @@ -0,0 +1,220 @@ +local size_min, size_max = 20, 59 +local delta_size = size_max - size_min + +local size_to_xp = { + {-32768, 2}, -- 1 + { 3, 6}, -- 2 + { 7, 16}, -- 3 + { 17, 36}, -- 4 + { 37, 72}, -- 5 + { 73, 148}, -- 6 + { 149, 306}, -- 7 + { 307, 616}, -- 8 + { 617, 1236}, -- 9 + { 1237, 2476}, -- 10 + { 2477, 32767} -- 11 +} + +local function xp_to_size(xp) + local i, l = 1, #size_to_xp + + while xp > size_to_xp[i][1] and i < l do + i = i + 1 + end + + return ((i - 1) / (l - 1) * delta_size + size_min) / 100 +end + +local max_orb_age = 300 -- seconds +local gravity = vector.new(0, -((tonumber(minetest.settings:get("movement_gravity"))) or 9.81), 0) + +local collector, pos, pos2 +local direction, distance, player_velocity, goal +local currentvel, acceleration, multiplier, velocity +local node, vel, def +local is_moving, is_slippery, slippery, slip_factor +local size +local function xp_step(self, dtime) + --if item set to be collected then only execute go to player + if self.collected == true then + if not self.collector then + self.collected = false + return + end + collector = minetest.get_player_by_name(self.collector) + if collector and collector:get_hp() > 0 and vector.distance(self.object:get_pos(),collector:get_pos()) < 7.25 then + self.object:set_acceleration(vector.new(0,0,0)) + self.disable_physics(self) + --get the variables + pos = self.object:get_pos() + pos2 = collector:get_pos() + + player_velocity = collector:get_velocity() or collector:get_player_velocity() + + pos2.y = pos2.y + 0.8 + + direction = vector.direction(pos,pos2) + distance = vector.distance(pos2,pos) + multiplier = distance + if multiplier < 1 then + multiplier = 1 + end + goal = vector.multiply(direction,multiplier) + currentvel = self.object:get_velocity() + + if distance > 1 then + multiplier = 20 - distance + velocity = vector.multiply(direction,multiplier) + goal = velocity + acceleration = vector.new(goal.x-currentvel.x,goal.y-currentvel.y,goal.z-currentvel.z) + self.object:add_velocity(vector.add(acceleration,player_velocity)) + elseif distance < 0.8 then + mcl_experience.add_xp(collector, self._xp) + self.object:remove() + end + return + else + self.collector = nil + self.enable_physics(self) + end + end + + + self.age = self.age + dtime + if self.age > max_orb_age then + self.object:remove() + return + end + + pos = self.object:get_pos() + + if pos then + node = minetest.get_node_or_nil({ + x = pos.x, + y = pos.y -0.25, + z = pos.z + }) + else + return + end + + -- Remove nodes in 'ignore' + if node and node.name == "ignore" then + self.object:remove() + return + end + + if not self.physical_state then + return -- Don't do anything + end + + -- Slide on slippery nodes + vel = self.object:get_velocity() + def = node and minetest.registered_nodes[node.name] + is_moving = (def and not def.walkable) or + vel.x ~= 0 or vel.y ~= 0 or vel.z ~= 0 + is_slippery = false + + if def and def.walkable then + slippery = minetest.get_item_group(node.name, "slippery") + is_slippery = slippery ~= 0 + if is_slippery and (math.abs(vel.x) > 0.2 or math.abs(vel.z) > 0.2) then + -- Horizontal deceleration + slip_factor = 4.0 / (slippery + 4) + self.object:set_acceleration({ + x = -vel.x * slip_factor, + y = 0, + z = -vel.z * slip_factor + }) + elseif vel.y == 0 then + is_moving = false + end + end + + if self.moving_state == is_moving and self.slippery_state == is_slippery then + -- Do not update anything until the moving state changes + return + end + + self.moving_state = is_moving + self.slippery_state = is_slippery + + if is_moving then + self.object:set_acceleration(gravity) + else + self.object:set_acceleration({x = 0, y = 0, z = 0}) + self.object:set_velocity({x = 0, y = 0, z = 0}) + end +end + +minetest.register_entity("mcl_experience:orb", { + initial_properties = { + hp_max = 1, + physical = true, + collide_with_objects = false, + collisionbox = {-0.2, -0.2, -0.2, 0.2, 0.2, 0.2}, + visual = "sprite", + visual_size = {x = 0.4, y = 0.4}, + textures = {name="mcl_experience_orb.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0}}, + spritediv = {x = 1, y = 14}, + initial_sprite_basepos = {x = 0, y = 0}, + is_visible = true, + pointable = false, + static_save = false, + }, + moving_state = true, + slippery_state = false, + physical_state = true, + -- Item expiry + age = 0, + -- Pushing item out of solid nodes + force_out = nil, + force_out_start = nil, + --Collection Variables + collectable = false, + try_timer = 0, + collected = false, + delete_timer = 0, + radius = 4, + + + on_activate = function(self, staticdata, dtime_s) + self.object:set_velocity(vector.new( + math.random(-2,2)*math.random(), + math.random(2,5), + math.random(-2,2)*math.random() + )) + self.object:set_armor_groups({immortal = 1}) + self.object:set_velocity({x = 0, y = 2, z = 0}) + self.object:set_acceleration(gravity) + local xp = tonumber(staticdata) + self._xp = xp + size = xp_to_size(xp) + self.object:set_properties({ + visual_size = {x = size, y = size}, + glow = 14, + }) + self.object:set_sprite({x=1,y=math.random(1,14)}, 14, 0.05, false) + end, + + enable_physics = function(self) + if not self.physical_state then + self.physical_state = true + self.object:set_properties({physical = true}) + self.object:set_velocity({x=0, y=0, z=0}) + self.object:set_acceleration(gravity) + end + end, + + disable_physics = function(self) + if self.physical_state then + self.physical_state = false + self.object:set_properties({physical = false}) + self.object:set_velocity({x=0, y=0, z=0}) + self.object:set_acceleration({x=0, y=0, z=0}) + end + end, + on_step = function(self, dtime) + xp_step(self, dtime) + end, +}) diff --git a/mods/HUD/mcl_experience/sounds/experience.ogg b/mods/HUD/mcl_experience/sounds/mcl_experience.ogg similarity index 100% rename from mods/HUD/mcl_experience/sounds/experience.ogg rename to mods/HUD/mcl_experience/sounds/mcl_experience.ogg diff --git a/mods/HUD/mcl_experience/sounds/level_up.ogg b/mods/HUD/mcl_experience/sounds/mcl_experience_level_up.ogg similarity index 100% rename from mods/HUD/mcl_experience/sounds/level_up.ogg rename to mods/HUD/mcl_experience/sounds/mcl_experience_level_up.ogg diff --git a/mods/HUD/mcl_experience/textures/experience_bar.png b/mods/HUD/mcl_experience/textures/mcl_experience_bar.png similarity index 100% rename from mods/HUD/mcl_experience/textures/experience_bar.png rename to mods/HUD/mcl_experience/textures/mcl_experience_bar.png diff --git a/mods/HUD/mcl_experience/textures/experience_bar_background.png b/mods/HUD/mcl_experience/textures/mcl_experience_bar_background.png similarity index 100% rename from mods/HUD/mcl_experience/textures/experience_bar_background.png rename to mods/HUD/mcl_experience/textures/mcl_experience_bar_background.png diff --git a/mods/HUD/mcl_experience/textures/experience_orb.png b/mods/HUD/mcl_experience/textures/mcl_experience_orb.png similarity index 100% rename from mods/HUD/mcl_experience/textures/experience_orb.png rename to mods/HUD/mcl_experience/textures/mcl_experience_orb.png diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index 17b6b6ac6..e876baf31 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -379,6 +379,49 @@ mcl_enchanting.enchantments.mending = { inv_tool_tab = true, } +mcl_experience.register_on_add_xp(function(player, xp) + local inv = player:get_inventory() + + local candidates = { + {list = "main", index = player:get_wield_index()}, + {list = "armor", index = 2}, + {list = "armor", index = 3}, + {list = "armor", index = 4}, + {list = "armor", index = 5}, + } + + local final_candidates = {} + for _, can in ipairs(candidates) do + local stack = inv:get_stack(can.list, can.index) + local wear = stack:get_wear() + if mcl_enchanting.has_enchantment(stack, "mending") and wear > 0 then + can.stack = stack + can.wear = wear + table.insert(final_candidates, can) + end + end + + if #final_candidates > 0 then + local can = final_candidates[math.random(#final_candidates)] + local stack, list, index, wear = can.stack, can.list, can.index, can.wear + local uses = mcl_util.calculate_durability(stack) + local multiplier = 2 * 65535 / uses + local repair = xp * multiplier + local new_wear = wear - repair + + if new_wear < 0 then + xp = math.floor(-new_wear / multiplier + 0.5) + new_wear = 0 + else + xp = 0 + end + + stack:set_wear(math.floor(new_wear)) + inv:set_stack(list, index, stack) + end + + return xp +end, 0) mcl_enchanting.enchantments.multishot = { name = S("Multishot"), diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index 6050aeed2..02425945c 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -499,7 +499,7 @@ function mcl_enchanting.show_enchanting_formspec(player) .. "real_coordinates[true]" .. "image[3.15,0.6;7.6,4.1;mcl_enchanting_button_background.png]" local itemstack = inv:get_stack("enchanting_item", 1) - local player_levels = mcl_experience.get_player_xp_level(player) + local player_levels = mcl_experience.get_level(player) local y = 0.65 local any_enchantment = false local table_slots = mcl_enchanting.get_table_slots(player, itemstack, num_bookshelves) @@ -549,11 +549,11 @@ function mcl_enchanting.handle_formspec_fields(player, formname, fields) if not slot then return end - local player_level = mcl_experience.get_player_xp_level(player) + local player_level = mcl_experience.get_level(player) if player_level < slot.level_requirement then return end - mcl_experience.set_player_xp_level(player, player_level - button_pressed) + mcl_experience.set_level(player, player_level - button_pressed) inv:remove_item("enchanting_lapis", cost) mcl_enchanting.set_enchanted_itemstring(itemstack) mcl_enchanting.set_enchantments(itemstack, slot.enchantments) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index e0c78832f..ade0be818 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -37,7 +37,7 @@ local fish = function(itemstack, player, pointed_thing) local num = 0 local ent = nil local noent = true - + local durability = 65 local unbreaking = mcl_enchanting.get_enchantment(itemstack, "unbreaking") if unbreaking > 0 then @@ -117,8 +117,8 @@ local fish = function(itemstack, player, pointed_thing) else minetest.add_item(pos, item) end - if mcl_experience.throw_experience then - mcl_experience.throw_experience(pos, math.random(1,6)) + if mcl_experience.throw_xp then + mcl_experience.throw_xp(pos, math.random(1,6)) end if not minetest.is_creative_enabled(player:get_player_name()) then diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index ca43b275a..dca476762 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -75,9 +75,9 @@ local function give_xp(pos, player) local xp = meta:get_int("xp") if xp > 0 then if player then - mcl_experience.add_experience(player, xp) + mcl_experience.add_xp(player, xp) else - mcl_experience.throw_experience(vector.add(pos, dir), xp) + mcl_experience.throw_xp(vector.add(pos, dir), xp) end meta:set_int("xp", 0) end diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index b756d4a6d..6e4b24c96 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -317,7 +317,7 @@ minetest.register_node("mcl_mobspawners:spawner", { if obj then obj:remove() end - mcl_experience.throw_experience(pos, math.random(15, 43)) + mcl_experience.throw_xp(pos, math.random(15, 43)) end, on_punch = function(pos) From 34f329a9d559c326e1c198ce1fbbfa16c1edee8e Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 19:57:21 +0100 Subject: [PATCH 158/271] TextureConverter: Implement grass palette conversion Source: https://minecraft.fandom.com/wiki/Tint Since the MineClone2 biomes do not entirely match with the Minecraft ones I picked the Minecraft biomes that seem to match them best. This also changes the palette index of the nether to match the desert instead of the mesa biome and changes the color of grass blocks in item form to the default minecraft one. --- mods/ITEMS/mcl_core/nodes_base.lua | 2 +- mods/MAPGEN/mcl_biomes/init.lua | 2 +- tools/Texture_Converter.py | 67 +++++++++++++++++++++--------- 3 files changed, 50 insertions(+), 21 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index abc650bb0..fe1ee58c2 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -365,7 +365,7 @@ minetest.register_node("mcl_core:dirt_with_grass", { overlay_tiles = {"mcl_core_grass_block_top.png", "", {name="mcl_core_grass_block_side_overlay.png", tileable_vertical=false}}, palette = "mcl_core_palette_grass.png", palette_index = 0, - color = "#55aa60", + color = "#8EB971", is_ground_content = true, stack_max = 64, groups = {handy=1,shovely=1,dirt=2,grass_block=1, grass_block_no_snow=1, soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, spreading_dirt_type=1, enderman_takable=1, building_block=1}, diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index a630dba04..a04822439 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -1496,7 +1496,7 @@ local function register_dimension_biomes() heat_point = 100, humidity_point = 0, _mcl_biome_type = "hot", - _mcl_palette_index = 19, + _mcl_palette_index = 17, }) --[[ THE END ]] diff --git a/tools/Texture_Converter.py b/tools/Texture_Converter.py index 820fa9c08..bdf249113 100755 --- a/tools/Texture_Converter.py +++ b/tools/Texture_Converter.py @@ -118,17 +118,6 @@ def colorize_alpha(colormap, source, colormap_pixel, texture_size, destination): colorize(colormap, source, colormap_pixel, texture_size, tempfile2.name) os.system("composite -compose Dst_In "+source+" "+tempfile2.name+" -alpha Set "+destination) -# This function is unused atm. -# TODO: Implemnt colormap extraction -def extract_colormap(colormap, colormap_pixel, positions): - os.system("convert -size 16x16 canvas:black "+tempfile1.name) - x=0 - y=0 - for p in positions: - os.system("convert "+colormap+" -crop 1x1+"+colormap_pixel+" -depth 8 "+tempfile2.name) - os.system("composite -geometry 16x16+"+x+"+"+y+" "+tempfile2.name) - x = x+1 - def target_dir(directory): if make_texture_pack: return output_dir + "/" + output_dir_name @@ -397,20 +386,60 @@ def convert_textures(): colorize_alpha(FOLIAG, tex_dir+"/blocks/vine.png", "16+39", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/mcl_core_vine.png") # Tall grass, fern (inventory images) - pcol = "49+172" # Plains grass color + pcol = "50+173" # Plains grass color colorize_alpha(GRASS, tex_dir+"/blocks/tallgrass.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_tallgrass_inv.png") colorize_alpha(GRASS, tex_dir+"/blocks/fern.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_fern_inv.png") colorize_alpha(GRASS, tex_dir+"/blocks/double_plant_fern_top.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_double_plant_fern_inv.png") colorize_alpha(GRASS, tex_dir+"/blocks/double_plant_grass_top.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_double_plant_grass_inv.png") - # TODO: Convert grass palette - - offset = [ - [ pcol, "", "grass" ], # Default grass: Plains + # Convert grass palette: https://minecraft.fandom.com/wiki/Tint + grass_colors = [ + # [Coords or #Color, AdditionalTint], # Index - Minecraft biome name (MineClone2 biome names) + ["50+173"], # 0 - Plains (flat, Plains, Plains_beach, Plains_ocean, End) + ["0+255"], # 1 - Savanna (Savanna, Savanna_beach, Savanna_ocean) + ["255+255"], # 2 - Ice Spikes (IcePlainsSpikes, IcePlainsSpikes_ocean) + ["255+255"], # 3 - Snowy Taiga (ColdTaiga, ColdTaiga_beach, ColdTaiga_beach_water, ColdTaiga_ocean) + ["178+193"], # 4 - Giant Tree Taiga (MegaTaiga, MegaTaiga_ocean) + ["178+193"], # 5 - Giant Tree Taiga (MegaSpruceTaiga, MegaSpruceTaiga_ocean) + ["203+239"], # 6 - Montains (ExtremeHills, ExtremeHills_beach, ExtremeHills_ocean) + ["203+239"], # 7 - Montains (ExtremeHillsM, ExtremeHillsM_ocean) + ["203+239"], # 8 - Montains (ExtremeHills+, ExtremeHills+_snowtop, ExtremeHills+_ocean) + ["50+173"], # 9 - Beach (StoneBeach, StoneBeach_ocean) + ["255+255"], # 10 - Snowy Tundra (IcePlains, IcePlains_ocean) + ["50+173"], # 11 - Sunflower Plains (SunflowerPlains, SunflowerPlains_ocean) + ["191+203"], # 12 - Taiga (Taiga, Taiga_beach, Taiga_ocean) + ["76+112"], # 13 - Forest (Forest, Forest_beach, Forest_ocean) + ["76+112"], # 14 - Flower Forest (FlowerForest, FlowerForest_beach, FlowerForest_ocean) + ["101+163"], # 15 - Birch Forest (BirchForest, BirchForest_ocean) + ["101+163"], # 16 - Birch Forest Hills (BirchForestM, BirchForestM_ocean) + ["0+255"], # 17 - Desert and Nether (Desert, Desert_ocean, Nether) + ["76+112", "#28340A"], # 18 - Dark Forest (RoofedForest, RoofedForest_ocean) + ["#90814d"], # 19 - Mesa (Mesa, Mesa_sandlevel, Mesa_ocean, ) + ["#90814d"], # 20 - Mesa (MesaBryce, MesaBryce_sandlevel, MesaBryce_ocean) + ["#90814d"], # 21 - Mesa (MesaPlateauF, MesaPlateauF_grasstop, MesaPlateauF_sandlevel, MesaPlateauF_ocean) + ["#90814d"], # 22 - Mesa (MesaPlateauFM, MesaPlateauFM_grasstop, MesaPlateauFM_sandlevel, MesaPlateauFM_ocean) + ["0+255"], # 23 - Shattered Savanna (or Savanna Plateau ?) (SavannaM, SavannaM_ocean) + ["12+36"], # 24 - Jungle (Jungle, Jungle_shore, Jungle_ocean) + ["12+36"], # 25 - Modified Jungle (JungleM, JungleM_shore, JungleM_ocean) + ["12+61"], # 26 - Jungle Edge (JungleEdge, JungleEdge_ocean) + ["12+61"], # 27 - Modified Jungle Edge (JungleEdgeM, JungleEdgeM_ocean) + ["#6A7039"], # 28 - Swamp (Swampland, Swampland_shore, Swampland_ocean) + ["25+25"], # 29 - Mushroom Fields and Mushroom Field Shore (MushroomIsland, MushroomIslandShore, MushroomIsland_ocean) ] - for o in offset: - colorize(GRASS, tex_dir+"/blocks/grass_top.png", o[0], str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_"+o[2]+".png") - colorize_alpha(GRASS, tex_dir+"/blocks/grass_side_overlay.png", o[0], str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_"+o[2]+"_side.png") + + grass_palette_file = target_dir("/mods/ITEMS/mcl_core/textures") + "/mcl_core_palette_grass.png" + os.system("convert -size 16x16 canvas:transparent " + grass_palette_file) + + for i, color in enumerate(grass_colors): + if color[0][0] == "#": + os.system("convert -size 1x1 xc:\"" + color[0] + "\" " + tempfile1.name + ".png") + else: + os.system("convert " + GRASS + " -crop 1x1+" + color[0] + " " + tempfile1.name + ".png") + + if len(color) > 1: + os.system("convert " + tempfile1.name + ".png \\( -size 1x1 xc:\"" + color[1] + "\" \\) -compose blend -define compose:args=50,50 -composite " + tempfile1.name + ".png") + + os.system("convert " + grass_palette_file + " \\( " + tempfile1.name + ".png -geometry +" + str(i % 16) + "+" + str(int(i / 16)) + " \\) -composite " + grass_palette_file) # Metadata if make_texture_pack: From 970988cb39bcd1ab35e17de886ffdd46aa52eee0 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 4 Aug 2021 12:41:25 +0200 Subject: [PATCH 159/271] Add sugar cane colorisation --- mods/ITEMS/mcl_core/functions.lua | 10 +++++++--- mods/ITEMS/mcl_core/nodes_cactuscane.lua | 13 +++++++++++++ .../mcl_core/textures/default_papyrus.png | Bin 277 -> 1953 bytes 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index 2ef73af72..d2ff3690a 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -773,8 +773,7 @@ end local grass_spread_randomizer = PseudoRandom(minetest.get_mapgen_setting("seed")) --- Return appropriate grass block node for pos -function mcl_core.get_grass_block_type(pos) +function mcl_core.get_grass_palette_index(pos) local biome_data = minetest.get_biome_data(pos) local index = 0 if biome_data then @@ -785,7 +784,12 @@ function mcl_core.get_grass_block_type(pos) index = reg_biome._mcl_palette_index end end - return {name="mcl_core:dirt_with_grass", param2=index} + return index +end + +-- Return appropriate grass block node for pos +function mcl_core.get_grass_block_type(pos) + return {name = "mcl_core:dirt_with_grass", param2 = mcl_core.get_grass_palette_index(pos)} end ------------------------------ diff --git a/mods/ITEMS/mcl_core/nodes_cactuscane.lua b/mods/ITEMS/mcl_core/nodes_cactuscane.lua index 839102534..e61d6df80 100644 --- a/mods/ITEMS/mcl_core/nodes_cactuscane.lua +++ b/mods/ITEMS/mcl_core/nodes_cactuscane.lua @@ -53,7 +53,10 @@ minetest.register_node("mcl_core:reeds", { _doc_items_longdesc = S("Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well."), _doc_items_usagehelp = S("Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow."), drawtype = "plantlike", + paramtype2 = "color", tiles = {"default_papyrus.png"}, + palette = "mcl_core_palette_grass.png", + palette_index = 0, inventory_image = "mcl_core_reeds.png", wield_image = "mcl_core_reeds.png", paramtype = "light", @@ -79,6 +82,7 @@ minetest.register_node("mcl_core:reeds", { groups = {dig_immediate=3, craftitem=1, deco_block=1, plant=1, non_mycelium_plant=1, dig_by_piston=1}, sounds = mcl_sounds.node_sound_leaves_defaults(), node_placement_prediction = "", + drop = "mcl_core:reeds", -- to prevent color inheritation on_place = mcl_util.generate_on_place_plant_function(function(place_pos, place_node) local soil_pos = {x=place_pos.x, y=place_pos.y-1, z=place_pos.z} local soil_node = minetest.get_node_or_nil(soil_pos) @@ -114,6 +118,15 @@ minetest.register_node("mcl_core:reeds", { return false end), + on_construct = function(pos) + local node = minetest.get_node(pos) + if node.param2 == 0 then + node.param2 = mcl_core.get_grass_palette_index(pos) + if node.param2 ~= 0 then + minetest.set_node(pos, node) + end + end + end, _mcl_blast_resistance = 0, _mcl_hardness = 0, }) diff --git a/mods/ITEMS/mcl_core/textures/default_papyrus.png b/mods/ITEMS/mcl_core/textures/default_papyrus.png index b6e2062ec6e5f4d2bf5c2a41437627ac6935e687..c928402f9507ddf95b93d2c43f31738a09356b81 100644 GIT binary patch delta 1951 zcmV;Q2VnS>0-+C(7=H)^0002B`ZwwT00i-RR9JLUVRs;Ka&Km7Y-J#Hd2nSQWq4_3 z004N}tyfuc?I;ZW*D87mNFavgFjl=C^zvI^z}G|alBzbb(G^%a=m_CJ{r69Uf8-+c z1`IoIgSAR76HK5ef>*~C#uJqp&-p_w;i88*J@3bANsmJ)bWuADFIs@N9SXemsrLL(xTfIyeTVF$u_Jc{_mWGeDOhFA46^-_kAk6sKO_VrgfLM0g!Q zzUlRLL!XZIMt?-t0Vd@h%b9m;#kW?E)kR|^qIPD~2sSP=GBHWW^?1!nb8@rDZnPlH ztEjS2UQ|{|TE>7RtTaG_1tT`BqtBQHqM=GodZH{ub)DCa0%hHKGQD9Vr-LrSAn8mM zv=%jOEI9mz;V+{X&jn>Fp&08_f7#%>!QV7!E%y+i@_##4f{S`y3yjWOf66Q&1l#0| zM}SwG^sA5jkyI51d4$=^0;5WYiNtv3mL5E7na9!}TL{6GX+T0GzFEMa76z0>&1g|M zB8Mn(^g>V+EpbbISzwa>AW6VT=q4 zA71$$0e<$jgitwe@j`VsuK4s0(u7soCpPo{~A{3;lv+ zy?^TB?bUm)b9(U@RrD}r?`f-li!SyKPH{-SEvfp)yAs7IQe`yqr%*P?kmOv;u1sa? zSvW=H7wtK7Gem?5_p>9 zY7N#f+O$@jDS!UVm|sQoDWl!Z&awE-7wrcHy+*tB{j<2erZFmL7|_&}q5|!&h0_q<@5M>+ITC z8P+}^`^f%go~faEC&JF-()of3-|Us7#T|P7Md;u&c4xX-y)l%Xyxbn#o=$z+`D{BYoJ%7KQugYl#Z^zlmE5^N;(jKRiJJBlGM`%4gZA0`$ z->BRVLikGzFVW8a9)`vXGSGP*wer|cXPsAH^sD~E*z_v{c?UOV`?KJ!C4hWUZB`fH zu!O>2e+k@rxO}OcYqw|IOnZsjW;5HkzK?ePH2aXsUTbhqbDw0w7p&?N+kakOlMlcE z{{iyl_o#?U>4X3P0V8QcLr_UWLm+T+Z)Rz1WdHzpoSl%dO2beThQHRJrRX4vgE(Yx zEx6dpr78r$LW~uxPHEC&F*k-JrT7NEi9SpRLGTTH0R?CO8yy_X;)TQiaX9Dy@4e7; zlgJd#9+knLU8vG1 z%S&h+h`aMLv#etCb`TtiAH;5K(pdZ?-i=Lc+3p4=nMFUI_BN~I^y1w1RXcc`(8tGR z#EdBkB^_z1&M{r~r5-sU_Y_3Zgt2;a&6M1T3ORWkiUuOxrY3K@%762fGLpwsUN+$l zBTt)${on7kkF#pCv9-v;Jgizvs^(+@?~kxHgpFrtU)N-{e!s0|rd!SY^NnAA?NBgF z<9F8p0007FOGiWi|A&vvzW@LL32;bRa{vGf6951U69E94oEQKA00(qQO+^Rg2m}fd z2@>7nWdHyH21!IgRDUSXZPC9<13?f5@ZTOO6m4X=GKHOm5Ku^$*GOR*u)f}ag}qOZ z&h+{KR=$9wusCci4g@{YNlYVak#mjUR6Fc9^Zl8?by}DQMn);BT?F7ZEnJ13t!hPU zP^EpRpxEnKHW=XXyn|A1`h+Ig^1|h`$=vICPdiZ13Ysl?q~)-g8*F|8tQK llh9+?wVNdCEf~PDfp2QAPj|0&ecJ#4002ovPDHLkV1niRxds3L delta 261 zcmZ3;Kb2{ML_G^L0|Ud`yN`l^lx~1eh%1mTpC06ysvl<{o6zDEm}_?b{(Zf0U9%KZ zZf@=k8#bu=s9E^ShbwDxa&j`A(Ut*f;4caC3ugHLABsQ}16S-^bD&g*r;B4q1!HnT zNJ1Hpw|5A$A=A}M(pM$anj|8l`wZ)RN)q%#ytzw~Ja``56`Cd{b>sqH$eU@?N_rk{ zW!n7ep1qkzHJFNeMB!#hT!RT2?Q2hJ5RGaSuOTX}KmN-3bD7(8A5T-G@yGywo? CI9i$j From 47340386e20501cad0d2e7a0deba2a64a0022c0a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 20:55:33 +0100 Subject: [PATCH 160/271] Turn parethesized sentence about voluntary work into normal one --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index de3ae536e..6d46237ca 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -343,9 +343,9 @@ at least two different people. requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can also unassign yourself from the issue / PR if you have no time or don't -want to take care of it for some other reason (after all, everyone is a +want to take care of it for some other reason. After all, everyone is a volunteer and we can't expect you to do work that you are not intrested -in) - **the important thing is that you make sure to inform us if you +in. **The important thing is that you make sure to inform us if you won't take care of something that has been assigned to you.** - Please assign yourself to something that you want to work on to avoid duplicate work. From 4d93e13f80873075b492a35ef340ab49f2b6ff4f Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 20:59:27 +0100 Subject: [PATCH 161/271] Reword developer presence in public discussion rooms rule --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6d46237ca..bbe097c0c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -349,9 +349,10 @@ in. **The important thing is that you make sure to inform us if you won't take care of something that has been assigned to you.** - Please assign yourself to something that you want to work on to avoid duplicate work. -- As a developer, it should be easy to reach you about -your code. You should be on the Discord (or, if you really don't like -Discord, Matrix or IRC). +- As a developer, it should be easy to reach you about your work. You +should be in at least one of the public MineClone2 discussion rooms - +preferrably Discord, but if you really don't like Discord, Matrix +or IRC are fine too. ### Maintainer status Maintainers carry the main responsibility for the project. From 6473494cbcf66e2454d33bc7b678dbf0c21ccdd1 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:01:43 +0100 Subject: [PATCH 162/271] prioritised -> prioritized --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bbe097c0c..ad9090930 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,11 +13,11 @@ whether you're a programmer or not. based on the Minetest engine with polished features, usable in both singleplayer and multiplayer. Currently, most of **Minecraft Java Edition 1.12.2** features are already implemented and polishing existing -features are prioritised over new feature requests. +features are prioritized over new feature requests. - With lessened priority yet strictly, implement features targetting **Minecraft version 1.17 + Optifine** (Optifine only as far as supported by the Minetest Engine). This means features in parity with the listed -Minecraft experiences are prioritised over those that don't fulfill this +Minecraft experiences are prioritized over those that don't fulfill this scope. - Optionally, create a performant experience that will run relatively well on really low spec computers. Unfortunately, due to Minecraft's From c2f0f0297be67de7ddc5775c5a5a63de9b5bb637 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:02:15 +0100 Subject: [PATCH 163/271] Optifine -> OptiFine --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ad9090930..ed5d2704d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,7 +15,7 @@ singleplayer and multiplayer. Currently, most of **Minecraft Java Edition 1.12.2** features are already implemented and polishing existing features are prioritized over new feature requests. - With lessened priority yet strictly, implement features targetting -**Minecraft version 1.17 + Optifine** (Optifine only as far as supported +**Minecraft version 1.17 + OptiFine** (OptiFine only as far as supported by the Minetest Engine). This means features in parity with the listed Minecraft experiences are prioritized over those that don't fulfill this scope. From 7c1777c53ac4ae388b1127d0266c5ec801fed4fb Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:03:17 +0100 Subject: [PATCH 164/271] minetest -> Minetest --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ed5d2704d..ea1175534 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -75,11 +75,11 @@ channel. However, it is not a bug if you believe something is missing in the game. In this case, please read "Requesting features" * If you report a crash, always include the error message. If you play -in singleplayer, post a screenshot of the message that minetest showed +in singleplayer, post a screenshot of the message that Minetest showed when the crash happened (or copy the message into your issue). If you are a server admin, you can find error messages in the log file of the server. -* Tell us which MineClone2 and minetest versions you are using. +* Tell us which MineClone2 and Minetest versions you are using. * Tell us how to reproduce the problem: What you were doing to trigger the bug, e.g. before the crash happened or what causes the faulty behavior. From faff9316e0b21cc32aa73e5f9fda7993ce56d1f1 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:03:58 +0100 Subject: [PATCH 165/271] minecraft -> Minecraft --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ea1175534..e8711bceb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -121,7 +121,7 @@ this is not required. It's also a good idea to join the Discord server #### Textures For textures we use the Pixel Perfection texture pack. This is mostly -enough; however in some cases - e.g. for newer minecraft features, it's +enough; however in some cases - e.g. for newer Minecraft features, it's useful to have texture artists around. If you want to make such contributions, join our Discord server. Demands for textures will be communicated there. From 6000c29171b7bcee909293addb60fb2fe012fd58 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:04:52 +0100 Subject: [PATCH 166/271] ressource -> resource --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e8711bceb..3f9186a32 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -129,7 +129,7 @@ communicated there. #### Sounds MineClone2 currently does not have a consistent way to handle sounds. The sounds in the game come from different sources, like the SnowZone -ressource pack or minetest_game. Unfortunately, MineClone2 does not play +resource pack or minetest_game. Unfortunately, MineClone2 does not play a sound in every situation you would get one in Minecraft. Any help with sounds is greatly appreciated, however if you add new sounds you should probably work together with a programmer, to write the code to actually From d6907970111ea975cd3fbbbb1f403721514fef7f Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:05:38 +0100 Subject: [PATCH 167/271] commited -> committed --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3f9186a32..f69a83015 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -159,7 +159,7 @@ the translation files for the language you are working on with the template files, to see what is missing and what is out of date with the template file. However, template files are often incomplete and/or out of date, sometimes they don't match the code. You can update the -translation files if that is required, you can also modifiy the code in +translation files if that is required, you can also modify the code in your translation PR if it's related to translation. You can also work on multiple languages at the same time in one PR. From cdf6533e0ac2c1321c5a048d28db3556af6d4161 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:06:08 +0100 Subject: [PATCH 168/271] regulary -> regularly --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f69a83015..2246e4bf9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -199,7 +199,7 @@ If you opened or have contributed to an issue, you receive the * Fork the repository (in case you have not already) * Do your change in a new branch * Create a pull request to get your changes merged into master -* Keep your pull request up to date by regulary merging upstream. It is +* Keep your pull request up to date by regularly merging upstream. It is imperative that conflicts are resolved prior to merging the pull request. * After the pull request got merged, you can delete the branch From bb6fe65aa5a3bb04b094f71851067e25b42b901b Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:06:35 +0100 Subject: [PATCH 169/271] inadequeate -> inadequate --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2246e4bf9..bc90905e0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -216,7 +216,7 @@ We appreciate any contributing effort to MineClone2. If you are a relatively new programmer, you can reach us on Discord, Matrix or IRC for questions about git, Lua, Minetest API, MineClone2 codebase or anything related to MineClone2. We can help you avoid writing code that -would be deemed inadequeate, or help you become familiar with MineClone2 +would be deemed inadequate, or help you become familiar with MineClone2 better, or assist you use development tools. ### Maintain your own code, even if alreay got merged From e70161501f3a01ac7c1ef3f3e895e1b07f334ec9 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:06:58 +0100 Subject: [PATCH 170/271] alreay -> already --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bc90905e0..b9f277a69 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -219,7 +219,7 @@ anything related to MineClone2. We can help you avoid writing code that would be deemed inadequate, or help you become familiar with MineClone2 better, or assist you use development tools. -### Maintain your own code, even if alreay got merged +### Maintain your own code, even if already got merged Sometimes, your code may cause crashes or bugs - we try to avoid such scenarios by testing everytime before merging it, but if your merged work causes problems, we ask you fix the issues as soon as possible. From 18dd1cabd0e523d25323a881071eb717b47bdeea Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:07:28 +0100 Subject: [PATCH 171/271] everytime -> every time --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b9f277a69..4e4be4ff7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -221,7 +221,7 @@ better, or assist you use development tools. ### Maintain your own code, even if already got merged Sometimes, your code may cause crashes or bugs - we try to avoid such -scenarios by testing everytime before merging it, but if your merged +scenarios by testing every time before merging it, but if your merged work causes problems, we ask you fix the issues as soon as possible. ### Changing Gameplay From 39f66eb4a025c8e4207ccadd690eb0467b8701be Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:08:11 +0100 Subject: [PATCH 172/271] repo -> repository --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4e4be4ff7..b9f443573 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -334,8 +334,8 @@ MineClone2 repository. #### Developer responsibilities - You should not push things directly to MineClone2 master - rather, do your work on a branch on your private -repo, then create a pull request. This way other people can review your -changes and make sure they work before they get merged. +repository, then create a pull request. This way other people can review +your changes and make sure they work before they get merged. - Merge PRs only when they have recieved the necessary feedback and have been tested to not lead to any crashes and do what they claim to do by at least two different people. From 46d1dd42d4f2c5ca4fd839fdf683c102c95ff5e7 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:08:47 +0100 Subject: [PATCH 173/271] recieved -> received --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b9f443573..67cc2c3e6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -336,7 +336,7 @@ MineClone2 repository. MineClone2 master - rather, do your work on a branch on your private repository, then create a pull request. This way other people can review your changes and make sure they work before they get merged. -- Merge PRs only when they have recieved the necessary feedback and have +- Merge PRs only when they have received the necessary feedback and have been tested to not lead to any crashes and do what they claim to do by at least two different people. - You may also be assigned to issues or pull From 61d0dc8182d37e2da33e3d6c7d0e082d813e3e20 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:09:13 +0100 Subject: [PATCH 174/271] intrested -> interested --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 67cc2c3e6..8ab8ee818 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -344,7 +344,7 @@ requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can also unassign yourself from the issue / PR if you have no time or don't want to take care of it for some other reason. After all, everyone is a -volunteer and we can't expect you to do work that you are not intrested +volunteer and we can't expect you to do work that you are not interested in. **The important thing is that you make sure to inform us if you won't take care of something that has been assigned to you.** - Please assign yourself to something that you want to work on to avoid From c6e9d763d673816251d37c03eb19318c7bd8a8a6 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:09:57 +0100 Subject: [PATCH 175/271] repo -> repository (in release process documentation) --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8ab8ee818..2b1f16ad8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -378,7 +378,7 @@ technical guidelines and issue/PR delegation * Update the version number in README.md * Use `git tag ` to tag the latest commit with the version number -* Push to repo (don't forget `--tags`!) +* Push to repository (don't forget `--tags`!) * Update ContentDB (https://content.minetest.net/packages/Wuzzy/mineclone2/) * Update first post in forum thread From 24ca8252a9aa97303475b6e15aac21ac65f0804f Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:14:22 +0100 Subject: [PATCH 176/271] community wants -> community feedback --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2b1f16ad8..961e16cee 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -362,7 +362,7 @@ Maintainers carry the main responsibility for the project. merged, by assigning either themselves or Developers to issues / PRs - Making releases - Making sure guidelines are kept -- Making project decisions based on what the community wants +- Making project decisions based on community feedback - Granting/revoking developer access - Enforcing the code of conduct (See CODE_OF_CONDUCT.md) - Moderating official community spaces (See Links section) From a77e79d985fc384ea49810b1feb2d625a9c9feac Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 3 Nov 2021 21:15:20 +0100 Subject: [PATCH 177/271] where the real troublespots are -> places to investigate optimization issues --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 961e16cee..7abbcc5ea 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -171,8 +171,8 @@ credited in the Contributors section. ### Profiling If you own a server, a great way to help us improve MineClone2's code is by giving us profiler results. Profiler results give us detailed -information about the game's performance and let us know where the real -troublespots are. This way we can make the game faster. +information about the game's performance and let us know places to +investigate optimization issues. This way we can make the game faster. #### Using Minetest's profiler Minetest has a built in profiler. Simply set `profiler.load = true` in From f9e7f584926946148c22675fa816e30ab8e366d0 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 4 Nov 2021 12:21:06 +0100 Subject: [PATCH 178/271] Reword necessary PR feedback section --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7abbcc5ea..5d84ea47b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -336,9 +336,9 @@ MineClone2 repository. MineClone2 master - rather, do your work on a branch on your private repository, then create a pull request. This way other people can review your changes and make sure they work before they get merged. -- Merge PRs only when they have received the necessary feedback and have -been tested to not lead to any crashes and do what they claim to do by -at least two different people. +- Merge PRs only when they have recieved the necessary feedback and have +been tested by at least two different people (including the author of +the pull request), to avoid crashes or the introduction of new bugs. - You may also be assigned to issues or pull requests as a developer. In this case it is your responsibility to fix the issue / review and merge the pull request when it is ready. You can From b937b38b1c24f14e25e24621978110ed1b7602bd Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 4 Nov 2021 12:26:14 +0100 Subject: [PATCH 179/271] Separate translations and assets --- CONTRIBUTING.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5d84ea47b..5e00fddd8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -142,9 +142,14 @@ Similar to the textures, we need people that can make 3D Models with Blender on demand. Many of the models have to be patched, some new animations have to be added etc. -#### Translations +#### Crediting +Asset contributions will be credited in their own respective sections in +CREDITS.md. If you have commited the results yourself, you will also be +credited in the Contributors section. -##### Workflow +### Contributing Translations + +#### Workflow To add/update support for your language to MineClone2, you should take the steps documented in the section for Programmers, add/update the translation files of the mods that you want to update. You can add @@ -153,7 +158,7 @@ the translation file entirely or only partly; basically any effort is valued. If your changes are small, you can also send them to developers via E-Mail, Discord, IRC or Matrix - they will credit you appropriately. -##### Things to note +#### Things to note You can use the script at `tools/check_translate_files.py` to compare the translation files for the language you are working on with the template files, to see what is missing and what is out of date with @@ -164,9 +169,9 @@ your translation PR if it's related to translation. You can also work on multiple languages at the same time in one PR. #### Crediting -Asset contributions will be credited in their own respective sections in -CREDITS.md. If you have commited the results yourself, you will also be -credited in the Contributors section. +Translation contributions will be credited in their own in CREDITS.md. +If you have commited the results yourself, you will also be credited in +the Contributors section. ### Profiling If you own a server, a great way to help us improve MineClone2's code From 649f481b51162e4314da28c58769d9730e9b216c Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 4 Nov 2021 12:28:36 +0100 Subject: [PATCH 180/271] provide example for non-descriptive title --- CONTRIBUTING.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5e00fddd8..9be680d6a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -54,7 +54,8 @@ you can report a bug or request a feature. ### Rules about both bugs and feature requests * Stay polite towards the developers and anyone else involved in the discussion. -* Choose a descriptive title. +* Choose a descriptive title (e.g. not just "crash", "bug" or "question" +). * Please write in plain, understandable English. It will be easier to communicate. * Please start the issue title with a capital letter. From 4a3a8841cdf956807e4b97a7dee2774ae873a930 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 4 Nov 2021 12:31:13 +0100 Subject: [PATCH 181/271] Add ingame credits script to release process --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9be680d6a..e8ea2bf5b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -380,6 +380,8 @@ technical guidelines and issue/PR delegation * Nicu - responsible for community related issues #### Release process +* Run `tools/generate_ingame_credits.lua` to update the ingame credits +from `CREDITS.md` and commit the result (if anything changed) * Launch MineClone2 to make sure it still runs * Update the version number in README.md * Use `git tag ` to tag the latest commit with the From ce4c0ed4c199028ebb69614629e7ece31a395e4b Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 4 Nov 2021 12:56:34 +0100 Subject: [PATCH 182/271] free -> free/libre --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e8ea2bf5b..de13bce7d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -396,7 +396,7 @@ version number ### Licensing By asking us to include your changes in this game, you agree that they fall under the terms of the GPLv3, which basically means they will -become part of a free software. +become part of a free/libre software. ### Crediting Contributors, Developers and Maintainers will be credited in From be86b603f8391d733f174bb6ccd44869f8327948 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 4 Nov 2021 13:14:35 +0100 Subject: [PATCH 183/271] Update README.md to reflect new contribution guidelines --- README.md | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 034d381ab..fe32f0039 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# MineClone 2 +# MineClone2 An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by many people. Not developed or endorsed by Mojang AB. @@ -69,9 +69,9 @@ an explanation. This game requires [Minetest](http://minetest.net) to run (version 5.3.0 or later). So you need to install Minetest first. Only stable versions of Minetest are officially supported. -There is no support for running MineClone 2 in development versions of Minetest. +There is no support for running MineClone2 in development versions of Minetest. -To install MineClone 2 (if you haven't already), move this directory into the +To install MineClone2 (if you haven't already), move this directory into the “games” directory of your Minetest data directory. Consult the help of Minetest to learn more. @@ -86,20 +86,21 @@ The MineClone2 repository is hosted at Mesehub. To contribute or report issues, * Reddit: * Minetest forums: -## Project description -The main goal of **MineClone 2** is to be a clone of Minecraft and to be released as free software. - -* **Target of development: Minecraft, PC Edition, version 1.12** (later known as “Java Edition”) -* MineClone2 also includes Optifine features supported by the Minetest -* In general, Minecraft is aimed to be cloned as good as possible -* Cloning the gameplay has highest priority -* MineClone 2 will use different assets, but with a similar style -* Limitations found in Minetest will be documented in the course of development -* Features of later Minecraft versions are collected in the mineclone5 branch - -## Using features from newer versions of Minecraft -For > 1.12 features, checkout MineClone5. It includes features from newer Minecraft versions. -Download it here: https://git.minetest.land/MineClone2/MineClone2/src/branch/mineclone5 +## Target +- Crucially, create a stable, moddable, free/libre clone of Minecraft +based on the Minetest engine with polished features, usable in both +singleplayer and multiplayer. Currently, most of **Minecraft Java +Edition 1.12.2** features are already implemented and polishing existing +features are prioritized over new feature requests. +- With lessened priority yet strictly, implement features targetting +**Minecraft version 1.17 + OptiFine** (OptiFine only as far as supported +by the Minetest Engine). This means features in parity with the listed +Minecraft experiences are prioritized over those that don't fulfill this +scope. +- Optionally, create a performant experience that will run relatively +well on really low spec computers. Unfortunately, due to Minecraft's +mechanisms and Minetest engine's limitations along with a very small +playerbase on low spec computers, optimizations are hard to investigate. ## Completion status This game is currently in **beta** stage. @@ -186,7 +187,7 @@ Technical differences from Minecraft: * Different engine (Minetest) * Different easter eggs -… and finally, MineClone 2 is free software (“free” as in “freedom”)! +… and finally, MineClone2 is free software (“free” as in “freedom”)! ## Other readme files From 23ca11c8e1b0f4e802ea5b41ac63c32136dc760a Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Thu, 4 Nov 2021 01:53:58 +0100 Subject: [PATCH 184/271] Use RLE compression in tga_encoder --- mods/CORE/tga_encoder/init.lua | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/mods/CORE/tga_encoder/init.lua b/mods/CORE/tga_encoder/init.lua index 96afda5e1..973e44855 100644 --- a/mods/CORE/tga_encoder/init.lua +++ b/mods/CORE/tga_encoder/init.lua @@ -38,18 +38,31 @@ function image:encode_header() self.data = self.data .. string.char(0) -- image id .. string.char(0) -- color map type - .. string.char(2) -- image type (uncompressed true-color image = 2) + .. string.char(10) -- image type (RLE RGB = 10) self:encode_colormap_spec() -- color map specification self:encode_image_spec() -- image specification end function image:encode_data() + local current_pixel = '' + local previous_pixel = '' + local count = 1 + local encoded = '' + local rle_packet = '' for _, row in ipairs(self.pixels) do for _, pixel in ipairs(row) do - self.data = self.data - .. string.char(pixel[3], pixel[2], pixel[1]) + current_pixel = string.char(pixel[3], pixel[2], pixel[1]) + if current_pixel ~= previous_pixel or count == 128 then + encoded = encoded .. rle_packet + count = 1 + previous_pixel = current_pixel + else + count = count + 1 + end + rle_packet = string.char(128 + count - 1) .. current_pixel end end + self.data = self.data .. encoded .. rle_packet end function image:encode_footer() From 4926c0560da96ef4d0677487212fac519f6c2083 Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Thu, 4 Nov 2021 15:15:28 +0100 Subject: [PATCH 185/271] Speed up TGA encoding by creating fewer strings --- mods/CORE/tga_encoder/init.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/CORE/tga_encoder/init.lua b/mods/CORE/tga_encoder/init.lua index 973e44855..39309c9c9 100644 --- a/mods/CORE/tga_encoder/init.lua +++ b/mods/CORE/tga_encoder/init.lua @@ -47,13 +47,13 @@ function image:encode_data() local current_pixel = '' local previous_pixel = '' local count = 1 - local encoded = '' + local packets = {} local rle_packet = '' for _, row in ipairs(self.pixels) do for _, pixel in ipairs(row) do current_pixel = string.char(pixel[3], pixel[2], pixel[1]) if current_pixel ~= previous_pixel or count == 128 then - encoded = encoded .. rle_packet + packets[#packets +1] = rle_packet count = 1 previous_pixel = current_pixel else @@ -62,7 +62,8 @@ function image:encode_data() rle_packet = string.char(128 + count - 1) .. current_pixel end end - self.data = self.data .. encoded .. rle_packet + packets[#packets +1] = rle_packet + self.data = self.data .. table.concat(packets) end function image:encode_footer() From d1d11f97406500ada5fe8e29577a36bd5bd6bf31 Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Thu, 4 Nov 2021 20:58:54 +0100 Subject: [PATCH 186/271] Fixed debug hudbars for player saturation and exhaustion when mcl_hunger_debug=true is set in .config file --- mods/PLAYER/mcl_hunger/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 8c154700a..90a622a18 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -91,8 +91,8 @@ end -- register saturation hudbar hb.register_hudbar("hunger", 0xFFFFFF, S("Food"), { icon = "hbhunger_icon.png", bgicon = "hbhunger_bgicon.png", bar = "hbhunger_bar.png" }, 1, 20, 20, false) if mcl_hunger.debug then - hb.register_hudbar("saturation", 0xFFFFFF, S("Saturation"), { icon = "mcl_hunger_icon_saturation.png", bgicon = "mcl_hunger_bgicon_saturation.png", bar = "mcl_hunger_bar_saturation.png" }, 1, mcl_hunger.SATURATION_INIT, 200, false, S("%s: %.1f/%d")) - hb.register_hudbar("exhaustion", 0xFFFFFF, S("Exhaust."), { icon = "mcl_hunger_icon_exhaustion.png", bgicon = "mcl_hunger_bgicon_exhaustion.png", bar = "mcl_hunger_bar_exhaustion.png" }, 1, 0, mcl_hunger.EXHAUST_LVL, false, S("%s: %d/%d")) + hb.register_hudbar("saturation", 0xFFFFFF, S("Saturation"), { icon = "mcl_hunger_icon_saturation.png", bgicon = "mcl_hunger_bgicon_saturation.png", bar = "mcl_hunger_bar_saturation.png" }, 1, mcl_hunger.SATURATION_INIT, 200, false) + hb.register_hudbar("exhaustion", 0xFFFFFF, S("Exhaust."), { icon = "mcl_hunger_icon_exhaustion.png", bgicon = "mcl_hunger_bgicon_exhaustion.png", bar = "mcl_hunger_bar_exhaustion.png" }, 1, 0, mcl_hunger.EXHAUST_LVL, false) end minetest.register_on_joinplayer(function(player) From d0d60804a39da1b8d8a980861440b1146747ec20 Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Thu, 4 Nov 2021 21:01:28 +0100 Subject: [PATCH 187/271] Implemented health regeneration mechanics as described in minecraft wiki. Saturation values and different regeneration speeds now used. --- mods/PLAYER/mcl_hunger/init.lua | 84 +++++++++++++++++++-------------- 1 file changed, 48 insertions(+), 36 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 90a622a18..535ccbed1 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -134,46 +134,58 @@ minetest.register_on_player_hpchange(function(player, hp_change) end end) -local main_timer = 0 -local timer = 0 -- Half second timer -local timerMult = 1 -- Cycles from 0 to 7, each time when timer hits half a second -minetest.register_globalstep(function(dtime) - main_timer = main_timer + dtime - timer = timer + dtime - if main_timer > mcl_hunger.HUD_TICK or timer > 0.25 then - if main_timer > mcl_hunger.HUD_TICK then main_timer = 0 end - for _,player in pairs(minetest.get_connected_players()) do - local name = player:get_player_name() - local h = tonumber(mcl_hunger.get_hunger(player)) - local hp = player:get_hp() - if timer > 0.25 then - -- Slow health regeneration, and hunger damage (every 4s). - -- Regeneration rate based on tutorial video . - -- Minecraft Wiki seems to be wrong in claiming that full hunger gives 0.5s regen rate. - if timerMult == 0 then - if h >= 18 and hp > 0 and hp < 20 then - -- +1 HP, +exhaustion - player:set_hp(hp+1) - mcl_hunger.exhaust(name, mcl_hunger.EXHAUST_REGEN) - mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) - elseif h == 0 then - -- Damage hungry player down to 1 HP - -- TODO: Allow starvation at higher difficulty levels - if hp-1 > 0 then - mcl_util.deal_damage(player, 1, {type = "starve"}) + +local fastFoodTickTimer = 0 -- 0.5 second cycle +local slowFoodTickTimer = 0 -- 4 second cycle +minetest.register_globalstep(function(dtime) + fastFoodTickTimer = fastFoodTickTimer + dtime + slowFoodTickTimer = slowFoodTickTimer + dtime + + local fastTimerWrapped = false -- if the fastFoodTickTimer wrapped around and everything dependent should be updated + local slowTimerWrapped = false + + if fastFoodTickTimer > 0.5 then + fastFoodTickTimer = 0 + fastTimerWrapped = true + end + if slowFoodTickTimer > 4.0 then + slowFoodTickTimer = 0 + slowTimerWrapped = true + end + + if fastTimerWrapped or slowTimerWrapped then -- only update players if something must be updated + for _,player in ipairs(minetest.get_connected_players()) do + + local playerName = player:get_player_name() + local foodLevel = mcl_hunger.get_hunger(player) + local foodSaturationLevel = mcl_hunger.get_saturation(player) + local playerHealth = player:get_hp() + + if playerHealth < 20 then + if foodLevel == 20 and foodSaturationLevel >= 6 then -- fast regeneration (2 health per second) + if fastTimerWrapped then + player:set_hp(playerHealth+1) + mcl_hunger.exhaust(playerName, mcl_hunger.EXHAUST_REGEN) + mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) + end + elseif foodLevel >= 18 then -- slow regeneration (1 health every 4 seconds) + if slowTimerWrapped then + player:set_hp(playerHealth+1) + mcl_hunger.exhaust(playerName, mcl_hunger.EXHAUST_REGEN) + mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) end end end - - end - end - end - if timer > 0.25 then - timer = 0 - timerMult = timerMult + 2 - if timerMult > 7 then - timerMult = 0 + + if foodLevel == 0 then --starvation + maximumStarvation = 1 -- the amount of health at which a player will stop to get harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) + -- TODO: implement Minecraft-like difficulty modes and the update maximumStarvation here + if playerHealth > maximumStarvation and slowTimerWrapped then + mcl_util.deal_damage(player, 1, {type = "starve"}) + end + end + end end end) From 1b259f928bb32e30208235d17560097ba059b047 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 6 Nov 2021 13:12:03 +0000 Subject: [PATCH 188/271] Add simple bone meal API - callback api - particle api --- mods/ITEMS/mcl_dye/init.lua | 83 ++++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 34 deletions(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index b9b5d92ac..274e31fcf 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -128,26 +128,35 @@ for _, row in ipairs(dyelocal.dyes) do end -- Bone Meal -local function bone_meal_particle(pos) +function mcl_dye.add_bone_meal_particle(pos, def) + if not def then + def = {} + end minetest.add_particlespawner({ - amount = 10, - time = 0.1, - minpos = { x = pos.x - 0.5, y = pos.y - 0.5, z = pos.z - 0.5 }, - maxpos = { x = pos.x + 0.5, y = pos.y + 0.5, z = pos.z + 0.5 }, - minvel = { x = 0, y = 0, z = 0}, - maxvel = { x = 0, y = 0, z = 0}, - minacc = { x = 0, y = 0, z = 0}, - maxacc = { x = 0, y = 0, z = 0}, - minexptime = 1, - maxexptime = 4, - minsize = 0.7, - maxsize = 2.4, + amount = def.amount or 10, + time = def.time or 0.1, + minpos = def.minpos or vector.subtract(pos, 0.5), + maxpos = def.maxpos or vector.add(pos, 0.5), + minvel = def.minvel or vector.new(0, 0, 0), + maxvel = def.maxvel or vector.new(0, 0, 0), + minacc = def.minacc or vector.new(0, 0, 0), + minacc = def.minacc or vector.new(0, 0, 0), + minexptime = def.minexptime or 1, + maxexptime = def.maxexptime or 4, + minsize = def.minsize or 0.7, + maxsize = def.maxsize or 2.4, texture = "mcl_particles_bonemeal.png^[colorize:#00EE00:125", -- TODO: real MC color - glow = 5, + glow = def.glow or 5, }) end -function mcl_dye.apply_bone_meal(pointed_thing) +mcl_dye.bone_meal_callbacks = {} + +function mcl_dye.register_on_bone_meal_apply(func) + table.insert(mcl_dye.bone_meal_callbacks, func) +end + +local function apply_bone_meal(pointed_thing) -- Bone meal currently spawns all flowers found in the plains. local flowers_table_plains = { "mcl_flowers:dandelion", @@ -183,14 +192,21 @@ function mcl_dye.apply_bone_meal(pointed_thing) local pos = pointed_thing.under local n = minetest.get_node(pos) if n.name == "" then return false end + + for _, func in pairs(mcl_dye.bone_meal_callbacks) do + if func(pointed_thing, user) then + return true + end + end + if minetest.get_item_group(n.name, "sapling") >= 1 then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) -- Saplings: 45% chance to advance growth stage if math.random(1,100) <= 45 then return mcl_core.grow_sapling(pos, n) end elseif minetest.get_item_group(n.name, "mushroom") == 1 then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) -- Try to grow huge mushroom -- Must be on a dirt-type block @@ -240,39 +256,37 @@ function mcl_dye.apply_bone_meal(pointed_thing) return false -- Wheat, Potato, Carrot, Pumpkin Stem, Melon Stem: Advance by 2-5 stages elseif string.find(n.name, "mcl_farming:wheat_") then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_wheat", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:potato_") then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_potato", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:carrot_") then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_carrot", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:pumpkin_") then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_pumpkin_stem", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:melontige_") then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) local stages = math.random(2, 5) return mcl_farming:grow_plant("plant_melon_stem", pos, n, stages, true) elseif string.find(n.name, "mcl_farming:beetroot_") then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) -- Beetroot: 75% chance to advance to next stage if math.random(1, 100) <= 75 then return mcl_farming:grow_plant("plant_beetroot", pos, n, 1, true) end elseif n.name == "mcl_cocoas:cocoa_1" or n.name == "mcl_cocoas:cocoa_2" then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) -- Cocoa: Advance by 1 stage mcl_cocoas.grow(pos) return true elseif minetest.get_item_group(n.name, "grass_block") == 1 then - local grass_block_pos = {x = pos.x, y = pos.y + 1, z = pos.z} - bone_meal_particle(grass_block_pos) -- Grass Block: Generate tall grass and random flowers all over the place for i = -2, 2 do for j = -2, 2 do @@ -285,6 +299,7 @@ function mcl_dye.apply_bone_meal(pointed_thing) -- Randomly generate flowers, tall grass or nothing if math.random(1,100) <= 90 then -- 90% tall grass, 10% flower + mcl_dye.add_bone_meal_particle(pos, {amount = 4}) if math.random(1,100) <= 90 then local col = n2.param2 minetest.add_node(pos, {name="mcl_flowers:tallgrass", param2=col}) @@ -314,24 +329,24 @@ function mcl_dye.apply_bone_meal(pointed_thing) -- Double flowers: Drop corresponding item elseif n.name == "mcl_flowers:rose_bush" or n.name == "mcl_flowers:rose_bush_top" then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) minetest.add_item(pos, "mcl_flowers:rose_bush") return true elseif n.name == "mcl_flowers:peony" or n.name == "mcl_flowers:peony_top" then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) minetest.add_item(pos, "mcl_flowers:peony") return true elseif n.name == "mcl_flowers:lilac" or n.name == "mcl_flowers:lilac_top" then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) minetest.add_item(pos, "mcl_flowers:lilac") return true elseif n.name == "mcl_flowers:sunflower" or n.name == "mcl_flowers:sunflower_top" then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) minetest.add_item(pos, "mcl_flowers:sunflower") return true elseif n.name == "mcl_flowers:tallgrass" then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) -- Tall Grass: Grow into double tallgrass local toppos = { x=pos.x, y=pos.y+1, z=pos.z } local topnode = minetest.get_node(toppos) @@ -342,7 +357,7 @@ function mcl_dye.apply_bone_meal(pointed_thing) end elseif n.name == "mcl_flowers:fern" then - bone_meal_particle(pos) + mcl_dye.add_bone_meal_particle(pos) -- Fern: Grow into large fern local toppos = { x=pos.x, y=pos.y+1, z=pos.z } local topnode = minetest.get_node(toppos) @@ -374,7 +389,7 @@ minetest.register_craftitem("mcl_dye:white", { end -- Use the bone meal on the ground - if(mcl_dye.apply_bone_meal(pointed_thing) and (not minetest.is_creative_enabled(user:get_player_name()))) then + if (apply_bone_meal(pointed_thing, user) and (not minetest.is_creative_enabled(user:get_player_name()))) then itemstack:take_item() end return itemstack @@ -387,7 +402,7 @@ minetest.register_craftitem("mcl_dye:white", { else pointed_thing = { above = pos, under = droppos } end - local success = mcl_dye.apply_bone_meal(pointed_thing) + local success = apply_bone_meal(pointed_thing, nil) if success then stack:take_item() end From 7bbc1e99519e12e47e0f88d84b9a999aa0affdb4 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 6 Nov 2021 13:34:22 +0000 Subject: [PATCH 189/271] Add API.md for bone meal API --- mods/ITEMS/mcl_dye/API.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 mods/ITEMS/mcl_dye/API.md diff --git a/mods/ITEMS/mcl_dye/API.md b/mods/ITEMS/mcl_dye/API.md new file mode 100644 index 000000000..04169f966 --- /dev/null +++ b/mods/ITEMS/mcl_dye/API.md @@ -0,0 +1,14 @@ +# mcl_dye + +# Bone meal API +Callback and particle functions. + +## mcl_dye.add_bone_meal_particle(pos, def) +Spawns standard or custom bone meal particles. +* `pos`: position, is ignored if you define def.minpos and def.maxpos +* `def`: (optional) particle definition + +## mcl_dye.register_on_bone_meal_apply(function(pointed_thing, user)) +Called when the bone meal is applied anywhere. +* `pointed_thing`: exact pointing location (see Minetest API), where the bone meal is applied +* `user`: ObjectRef of the player who aplied the bone meal, can be nil! \ No newline at end of file From ea46c8741bc8e89b789ff63ef3e989e8e490ec37 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 7 Nov 2021 20:29:11 +0100 Subject: [PATCH 190/271] Add OpenCollective link and credits --- CONTRIBUTING.md | 8 ++++++++ CREDITS.md | 3 +++ README.md | 1 + mods/HUD/mcl_credits/people.lua | 3 +++ tools/generate_ingame_credits.lua | 1 + 5 files changed, 16 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index de13bce7d..27a820d87 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -32,6 +32,7 @@ playerbase on low spec computers, optimizations are hard to investigate. * [Matrix](https://app.element.io/#/room/#mc2:matrix.org) * [Reddit](https://www.reddit.com/r/MineClone2/) * [Minetest forums](https://forum.minetest.net/viewtopic.php?f=50&t=16407) +* [OpenCollective](https://opencollective.com/mineclone2) ## Using git MineClone2 is developed using the version control system @@ -194,9 +195,16 @@ MeseHub, let us know what you think about a topic and help us make decisions. Also, note that a lot of discussion takes place on the Discord server, so it's definitely worth checking it out. +### Funding +You can help pay for our infrastructure (Mesehub) by donating to our +OpenCollective link (See Links section). + ### Crediting If you opened or have contributed to an issue, you receive the `Community` role on our Discord (after asking for it). +OpenCollective Funders are credited in their own section in +`CREDITS.md` and receive a special role "Funder" on our discord (unless +they have made their donation Incognito). ## How you can help as a programmer (Almost) all the MineClone2 development is done using pull requests. diff --git a/CREDITS.md b/CREDITS.md index 95884dcac..dfbe58375 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -130,6 +130,9 @@ * todoporlalibertad * Marcin Serwin +## Funders +* 40W + ## Special thanks * celeron55 for creating Minetest * Jordach for the jukebox music compilation from Big Freaking Dig diff --git a/README.md b/README.md index fe32f0039..b8dc50f1f 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,7 @@ The MineClone2 repository is hosted at Mesehub. To contribute or report issues, * Matrix: * Reddit: * Minetest forums: +* OpenCollective: ## Target - Crucially, create a stable, moddable, free/libre clone of Minecraft diff --git a/mods/HUD/mcl_credits/people.lua b/mods/HUD/mcl_credits/people.lua index 2861b5052..8f1d4c2e9 100644 --- a/mods/HUD/mcl_credits/people.lua +++ b/mods/HUD/mcl_credits/people.lua @@ -132,6 +132,9 @@ return { "todoporlalibertad", "Marcin Serwin", }}, + {S("Funders"), 0xF7FF00, { + "40W", + }}, {S("Special thanks"), 0x00E9FF, { "celeron55 for creating Minetest", "Jordach for the jukebox music compilation from Big Freaking Dig", diff --git a/tools/generate_ingame_credits.lua b/tools/generate_ingame_credits.lua index 89b633ef0..db124aaf6 100755 --- a/tools/generate_ingame_credits.lua +++ b/tools/generate_ingame_credits.lua @@ -13,6 +13,7 @@ local colors = { ["3D Models"] = "0x0019FF", ["Textures"] = "0xFF9705", ["Translations"] = "0x00FF60", + ["Funders"] = "0xF7FF00", ["Special thanks"] = "0x00E9FF", } From a34ae040c8ea78d8a4f697bbce7485365f549f0a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 8 Nov 2021 14:02:22 +0100 Subject: [PATCH 191/271] Add ContentDB links --- CONTRIBUTING.md | 1 + README.md | 1 + 2 files changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 27a820d87..a7383df79 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -32,6 +32,7 @@ playerbase on low spec computers, optimizations are hard to investigate. * [Matrix](https://app.element.io/#/room/#mc2:matrix.org) * [Reddit](https://www.reddit.com/r/MineClone2/) * [Minetest forums](https://forum.minetest.net/viewtopic.php?f=50&t=16407) +* [ContentDB](https://content.minetest.net/packages/wuzzy/mineclone2/) * [OpenCollective](https://opencollective.com/mineclone2) ## Using git diff --git a/README.md b/README.md index b8dc50f1f..8f8f0b1e6 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,7 @@ The MineClone2 repository is hosted at Mesehub. To contribute or report issues, * Matrix: * Reddit: * Minetest forums: +* ContentDB: * OpenCollective: ## Target From 30ce6f8a779d5f4a3ab564c46b3d7ecbdaaf11b5 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 8 Nov 2021 13:16:20 +0000 Subject: [PATCH 192/271] Fix typo min -> max --- mods/ITEMS/mcl_dye/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 274e31fcf..2f6b0f105 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -140,7 +140,7 @@ function mcl_dye.add_bone_meal_particle(pos, def) minvel = def.minvel or vector.new(0, 0, 0), maxvel = def.maxvel or vector.new(0, 0, 0), minacc = def.minacc or vector.new(0, 0, 0), - minacc = def.minacc or vector.new(0, 0, 0), + maxacc = def.maxacc or vector.new(0, 0, 0), minexptime = def.minexptime or 1, maxexptime = def.maxexptime or 4, minsize = def.minsize or 0.7, From 976f522b9d25952768a77f7d6a9ae990d186da37 Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Mon, 8 Nov 2021 15:33:53 +0100 Subject: [PATCH 193/271] Combine slowFoodTickTimer and fastFoodTickTimer to a single food_tick_timer --- mods/PLAYER/mcl_hunger/init.lua | 69 +++++++++++++-------------------- 1 file changed, 27 insertions(+), 42 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 535ccbed1..0405c28ef 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -136,57 +136,42 @@ end) -local fastFoodTickTimer = 0 -- 0.5 second cycle -local slowFoodTickTimer = 0 -- 4 second cycle + +local food_tick_timer = 0 minetest.register_globalstep(function(dtime) - fastFoodTickTimer = fastFoodTickTimer + dtime - slowFoodTickTimer = slowFoodTickTimer + dtime + food_tick_timer = food_tick_timer + dtime - local fastTimerWrapped = false -- if the fastFoodTickTimer wrapped around and everything dependent should be updated - local slowTimerWrapped = false - - if fastFoodTickTimer > 0.5 then - fastFoodTickTimer = 0 - fastTimerWrapped = true - end - if slowFoodTickTimer > 4.0 then - slowFoodTickTimer = 0 - slowTimerWrapped = true - end - - if fastTimerWrapped or slowTimerWrapped then -- only update players if something must be updated - for _,player in ipairs(minetest.get_connected_players()) do + for _,player in ipairs(minetest.get_connected_players()) do + + local player_name = player:get_player_name() + local food_level = mcl_hunger.get_hunger(player) + local food_saturation_level = mcl_hunger.get_saturation(player) + local player_health = player:get_hp() + + if food_tick_timer > 4.0 then + food_tick_timer = 0 - local playerName = player:get_player_name() - local foodLevel = mcl_hunger.get_hunger(player) - local foodSaturationLevel = mcl_hunger.get_saturation(player) - local playerHealth = player:get_hp() + if food_level >= 18 and player_health < 20 then --slow regenration + food_tick_timer = 0 + player:set_hp(player_health+1) + mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) + mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) - if playerHealth < 20 then - if foodLevel == 20 and foodSaturationLevel >= 6 then -- fast regeneration (2 health per second) - if fastTimerWrapped then - player:set_hp(playerHealth+1) - mcl_hunger.exhaust(playerName, mcl_hunger.EXHAUST_REGEN) - mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) - end - elseif foodLevel >= 18 then -- slow regeneration (1 health every 4 seconds) - if slowTimerWrapped then - player:set_hp(playerHealth+1) - mcl_hunger.exhaust(playerName, mcl_hunger.EXHAUST_REGEN) - mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) - end - end - end - - if foodLevel == 0 then --starvation - maximumStarvation = 1 -- the amount of health at which a player will stop to get harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) + elseif food_level == 0 then --starvation + maximumStarvation = 1 --the amount of health at which a player will stop to get harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) -- TODO: implement Minecraft-like difficulty modes and the update maximumStarvation here - if playerHealth > maximumStarvation and slowTimerWrapped then + if player_health > maximumStarvation then mcl_util.deal_damage(player, 1, {type = "starve"}) end end - + + elseif food_tick_timer > 0.5 and food_level == 20 and food_saturation_level >= 6 then --fast regeneration + food_tick_timer = 0 + player:set_hp(player_health+1) + mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) + mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) end + end end) From 2f053885414d0cc5d480e92d2acc63e7e7de8b1a Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Mon, 8 Nov 2021 15:49:05 +0100 Subject: [PATCH 194/271] Add one food_tick_timer per player instead of using one for all players. --- mods/PLAYER/mcl_hunger/init.lua | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 0405c28ef..1e3d07a47 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -137,11 +137,16 @@ end) -local food_tick_timer = 0 +local food_tick_timers = {} --one food_tick_timer per player, keys are the player-objects minetest.register_globalstep(function(dtime) - food_tick_timer = food_tick_timer + dtime - for _,player in ipairs(minetest.get_connected_players()) do + + local food_tick_timer = food_tick_timers[player] + if food_tick_timer == nil then + food_tick_timer = 0 + else + food_tick_timer = food_tick_timer + dtime + end local player_name = player:get_player_name() local food_level = mcl_hunger.get_hunger(player) @@ -172,6 +177,7 @@ minetest.register_globalstep(function(dtime) mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) end + food_tick_timers[player] = food_tick_timer --update food_tick_timer table end end) From e82d21040c952e78fa8c64c8a32405d311a8a43c Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Mon, 8 Nov 2021 19:15:56 +0100 Subject: [PATCH 195/271] minor changes, ipairs() replaced with pairs() --- mods/PLAYER/mcl_hunger/init.lua | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 1e3d07a47..3a7af7e67 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -139,15 +139,9 @@ end) local food_tick_timers = {} --one food_tick_timer per player, keys are the player-objects minetest.register_globalstep(function(dtime) - for _,player in ipairs(minetest.get_connected_players()) do + for _,player in pairs(minetest.get_connected_players()) do - local food_tick_timer = food_tick_timers[player] - if food_tick_timer == nil then - food_tick_timer = 0 - else - food_tick_timer = food_tick_timer + dtime - end - + local food_tick_timer = food_tick_timers[player] and food_tick_timers[player] + dtime or 0 local player_name = player:get_player_name() local food_level = mcl_hunger.get_hunger(player) local food_saturation_level = mcl_hunger.get_saturation(player) @@ -157,15 +151,14 @@ minetest.register_globalstep(function(dtime) food_tick_timer = 0 if food_level >= 18 and player_health < 20 then --slow regenration - food_tick_timer = 0 player:set_hp(player_health+1) mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) elseif food_level == 0 then --starvation - maximumStarvation = 1 --the amount of health at which a player will stop to get harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) + local maximum_starvation = 1 --the amount of health at which a player will stop to get harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) -- TODO: implement Minecraft-like difficulty modes and the update maximumStarvation here - if player_health > maximumStarvation then + if player_health > maximum_starvation then mcl_util.deal_damage(player, 1, {type = "starve"}) end end From a7bc460fae77f2a841bb7a5b9e735226373a4e44 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 9 Nov 2021 17:39:39 +0100 Subject: [PATCH 196/271] Fix boat and enchanting book texture glitches / warnings --- mods/ENTITIES/mcl_boats/init.lua | 10 ++++++++-- mods/ITEMS/mcl_enchanting/init.lua | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 311b07882..f46c14d46 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -115,7 +115,7 @@ local boat = { collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5}, visual = "mesh", mesh = "mcl_boats_boat.b3d", - textures = {"mcl_boats_texture_oak_boat.png"}, + textures = {"mcl_boats_texture_oak_boat.png", "mcl_boats_texture_oak_boat.png", "mcl_boats_texture_oak_boat.png", "mcl_boats_texture_oak_boat.png", "mcl_boats_texture_oak_boat.png"}, visual_size = boat_visual_size, hp_max = boat_max_hp, damage_texture_modifier = "^[colorize:white:0", @@ -148,6 +148,11 @@ function boat.on_activate(self, staticdata, dtime_s) self._v = data.v self._last_v = self._v self._itemstring = data.itemstring + + while #data.textures < 5 do + table.insert(data.textures, data.textures[1]) + end + self.object:set_properties({textures = data.textures}) end end @@ -434,8 +439,9 @@ for b=1, #boat_ids do pos = vector.add(pos, vector.multiply(dir, boat_y_offset_ground)) end local boat = minetest.add_entity(pos, "mcl_boats:boat") + local texture = "mcl_boats_texture_"..images[b].."_boat.png" boat:get_luaentity()._itemstring = itemstring - boat:set_properties({textures = { "mcl_boats_texture_"..images[b].."_boat.png" }}) + boat:set_properties({textures = { texture, texture, texture, texture, texture }}) boat:set_yaw(placer:get_look_horizontal()) if not minetest.is_creative_enabled(placer:get_player_name()) then itemstack:take_item() diff --git a/mods/ITEMS/mcl_enchanting/init.lua b/mods/ITEMS/mcl_enchanting/init.lua index 5aec1ced6..9f9fbd271 100644 --- a/mods/ITEMS/mcl_enchanting/init.lua +++ b/mods/ITEMS/mcl_enchanting/init.lua @@ -183,7 +183,7 @@ minetest.register_entity("mcl_enchanting:book", { collisionbox = {0, 0, 0}, pointable = false, physical = false, - textures = {"mcl_enchanting_book_entity.png"}, + textures = {"mcl_enchanting_book_entity.png", "mcl_enchanting_book_entity.png", "mcl_enchanting_book_entity.png", "mcl_enchanting_book_entity.png", "mcl_enchanting_book_entity.png"}, static_save = false, }, _player_near = false, From 017bf705e9f5b549a45d448b89a0d1d347db370c Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Tue, 9 Nov 2021 19:35:32 +0100 Subject: [PATCH 197/271] Fixing that player can regenerate health in death screen and then respawn without HP being set to maximum --- mods/PLAYER/mcl_hunger/init.lua | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index 3a7af7e67..e54fb2fb2 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -150,10 +150,12 @@ minetest.register_globalstep(function(dtime) if food_tick_timer > 4.0 then food_tick_timer = 0 - if food_level >= 18 and player_health < 20 then --slow regenration - player:set_hp(player_health+1) - mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) - mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) + if food_level >= 18 then --slow regenration + if player_health > 0 and player_health < 20 then + player:set_hp(player_health+1) + mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) + mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) + end elseif food_level == 0 then --starvation local maximum_starvation = 1 --the amount of health at which a player will stop to get harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) @@ -164,10 +166,12 @@ minetest.register_globalstep(function(dtime) end elseif food_tick_timer > 0.5 and food_level == 20 and food_saturation_level >= 6 then --fast regeneration - food_tick_timer = 0 - player:set_hp(player_health+1) - mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) - mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) + if player_health > 0 and player_health < 20 then + food_tick_timer = 0 + player:set_hp(player_health+1) + mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) + mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) + end end food_tick_timers[player] = food_tick_timer --update food_tick_timer table From fa22ec4dd0b9c70eebb108bfef004e9100655bd2 Mon Sep 17 00:00:00 2001 From: iliekprogrammar Date: Wed, 10 Nov 2021 02:50:49 +0800 Subject: [PATCH 198/271] Add helper functions to update/merge tables. --- mods/CORE/mcl_util/init.lua | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index 363b9b5fe..d91c86f09 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -1,5 +1,27 @@ mcl_util = {} +-- Updates all values in t using values from to*. +function table.update(t, ...) + for _, to in ipairs{...} do + for k,v in pairs(to) do + t[k] = v + end + end + return t +end + +-- Updates nil values in t using values from to*. +function table.update_nil(t, ...) + for _, to in ipairs{...} do + for k,v in pairs(to) do + if t[k] == nil then + t[k] = v + end + end + end + return t +end + -- Based on minetest.rotate_and_place --[[ From f61143758edc46cb1e4d7feef5a78d35c7c31d75 Mon Sep 17 00:00:00 2001 From: iliekprogrammar Date: Wed, 10 Nov 2021 12:54:28 +0800 Subject: [PATCH 199/271] Fix small typo in API.md --- mods/CORE/mcl_worlds/API.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/CORE/mcl_worlds/API.md b/mods/CORE/mcl_worlds/API.md index dd96b01b5..69508e924 100644 --- a/mods/CORE/mcl_worlds/API.md +++ b/mods/CORE/mcl_worlds/API.md @@ -12,7 +12,7 @@ Params: * pos: position -## mcl_worlds.y_to_layer(y) +## mcl_worlds.y_to_layer(y) This function is used to calculate the minetest y layer and dimension of the given minecraft layer. Mainly used for ore generation. Takes an Y coordinate as input and returns: @@ -78,4 +78,4 @@ Table containing all function registered with mcl_worlds.register_on_dimension_c Notify this mod of a dimension change of to * player: player, player who changed the dimension -* dimension: string, new dimension ("overworld", "nether", "end", "void") \ No newline at end of file +* dimension: string, new dimension ("overworld", "nether", "end", "void") From 8979230c4262411d8e2ae47ba8433e84e63585d1 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 10 Nov 2021 17:15:27 +0000 Subject: [PATCH 200/271] Several fixes for applying bone meal to grass --- mods/ITEMS/mcl_dye/init.lua | 53 +++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 2f6b0f105..2b4d8a2f2 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -288,38 +288,39 @@ local function apply_bone_meal(pointed_thing) return true elseif minetest.get_item_group(n.name, "grass_block") == 1 then -- Grass Block: Generate tall grass and random flowers all over the place - for i = -2, 2 do - for j = -2, 2 do - pos = pointed_thing.above - pos = {x=pos.x+i, y=pos.y, z=pos.z+j} - n = minetest.get_node(pos) - local n2 = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}) + for i = -7, 7 do + for j = -7, 7 do + for y = -1, 1 do + pos = vector.offset(pointed_thing.above, i, y, j) + n = minetest.get_node(pos) + local n2 = minetest.get_node(vector.offset(pos, 0, -1, 0)) - if n.name ~= "" and n.name == "air" and (minetest.get_item_group(n2.name, "grass_block_no_snow") == 1) then - -- Randomly generate flowers, tall grass or nothing - if math.random(1,100) <= 90 then - -- 90% tall grass, 10% flower - mcl_dye.add_bone_meal_particle(pos, {amount = 4}) - if math.random(1,100) <= 90 then - local col = n2.param2 - minetest.add_node(pos, {name="mcl_flowers:tallgrass", param2=col}) - else - local flowers_table - if mg_name == "v6" then - flowers_table = flowers_table_plains + if n.name ~= "" and n.name == "air" and (minetest.get_item_group(n2.name, "grass_block_no_snow") == 1) then + -- Randomly generate flowers, tall grass or nothing + if math.random(1, 100) <= 90 / ((math.abs(i) + math.abs(j)) / 2)then + -- 90% tall grass, 10% flower + mcl_dye.add_bone_meal_particle(pos, {amount = 4}) + if math.random(1,100) <= 90 then + local col = n2.param2 + minetest.add_node(pos, {name="mcl_flowers:tallgrass", param2=col}) else - local biome = minetest.get_biome_name(minetest.get_biome_data(pos).biome) - if biome == "Swampland" or biome == "Swampland_shore" or biome == "Swampland_ocean" or biome == "Swampland_deep_ocean" or biome == "Swampland_underground" then - flowers_table = flowers_table_swampland - elseif biome == "FlowerForest" or biome == "FlowerForest_beach" or biome == "FlowerForest_ocean" or biome == "FlowerForest_deep_ocean" or biome == "FlowerForest_underground" then - flowers_table = flowers_table_flower_forest - elseif biome == "Plains" or biome == "Plains_beach" or biome == "Plains_ocean" or biome == "Plains_deep_ocean" or biome == "Plains_underground" or biome == "SunflowerPlains" or biome == "SunflowerPlains_ocean" or biome == "SunflowerPlains_deep_ocean" or biome == "SunflowerPlains_underground" then + local flowers_table + if mg_name == "v6" then flowers_table = flowers_table_plains else - flowers_table = flowers_table_simple + local biome = minetest.get_biome_name(minetest.get_biome_data(pos).biome) + if biome == "Swampland" or biome == "Swampland_shore" or biome == "Swampland_ocean" or biome == "Swampland_deep_ocean" or biome == "Swampland_underground" then + flowers_table = flowers_table_swampland + elseif biome == "FlowerForest" or biome == "FlowerForest_beach" or biome == "FlowerForest_ocean" or biome == "FlowerForest_deep_ocean" or biome == "FlowerForest_underground" then + flowers_table = flowers_table_flower_forest + elseif biome == "Plains" or biome == "Plains_beach" or biome == "Plains_ocean" or biome == "Plains_deep_ocean" or biome == "Plains_underground" or biome == "SunflowerPlains" or biome == "SunflowerPlains_ocean" or biome == "SunflowerPlains_deep_ocean" or biome == "SunflowerPlains_underground" then + flowers_table = flowers_table_plains + else + flowers_table = flowers_table_simple + end end + minetest.add_node(pos, {name=flowers_table[math.random(1, #flowers_table)]}) end - minetest.add_node(pos, {name=flowers_table[math.random(1, #flowers_table)]}) end end end From 0b6467d6798c8620db1dee91152feda66087fdfe Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Thu, 11 Nov 2021 16:03:04 +0100 Subject: [PATCH 201/271] Reduce creeper run_velocity to 2.1, to fix #1691 --- mods/ENTITIES/mobs_mc/creeper.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 999cc5f2d..616e823c8 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -37,7 +37,7 @@ mobs:register_mob("mobs_mc:creeper", { }, makes_footstep_sound = false, walk_velocity = 1.05, - run_velocity = 3.25, + run_velocity = 2.1, runaway_from = { "mobs_mc:ocelot", "mobs_mc:cat" }, attack_type = "explode", eye_height = 1.25, From 68810a2a74ff3dca000234b26c749fb5486d5996 Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Thu, 11 Nov 2021 16:47:32 +0100 Subject: [PATCH 202/271] Change creeper fuse range and defuse range according to minecraft wiki: https://minecraft.fandom.com/wiki/Creeper and: https://minecraft.fandom.com/wiki/Explosion. Fix of #1689 --- mods/ENTITIES/mobs_mc/creeper.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 616e823c8..eb1f108c6 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -47,8 +47,8 @@ mobs:register_mob("mobs_mc:creeper", { --explosion_radius = 3, --explosion_damage_radius = 6, --explosiontimer_reset_radius = 6, - reach = 1.5, - defuse_reach = 4, + reach = 3, + defuse_reach = 5.2, explosion_timer = 0.3, allow_fuse_reset = true, stop_to_explode = true, @@ -186,8 +186,8 @@ mobs:register_mob("mobs_mc:creeper_charged", { --explosion_radius = 3, --explosion_damage_radius = 6, --explosiontimer_reset_radius = 3, - reach = 1.5, - defuse_reach = 4, + reach = 3, + defuse_reach = 10.4, explosion_timer = 0.3, allow_fuse_reset = true, stop_to_explode = true, From 10a5f8c4bfdbfec27fe83ab3c40478e7217c3680 Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Thu, 11 Nov 2021 16:50:29 +0100 Subject: [PATCH 203/271] Adding attribute hostile=true to charged creeper to fix that the charged creeper has no behavior: Issue #1756 --- mods/ENTITIES/mobs_mc/creeper.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index eb1f108c6..2b66d0f07 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -151,6 +151,7 @@ mobs:register_mob("mobs_mc:creeper_charged", { description = S("Charged Creeper"), type = "monster", spawn_class = "hostile", + hostile = true, hp_min = 20, hp_max = 20, xp_min = 5, From 03d22852ee8a5b203840266f39d302a8854e3cfb Mon Sep 17 00:00:00 2001 From: Dieter44 <55900078+Dieter44@users.noreply.github.com> Date: Thu, 11 Nov 2021 16:56:44 +0100 Subject: [PATCH 204/271] Replace mobs:boom with equivalent mcl_explosions.exlode() to fix game crash when creeper is right-clicked with flint and steel. Issue #1753 --- mods/ENTITIES/mobs_mc/creeper.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 2b66d0f07..1e23231c1 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -95,7 +95,8 @@ mobs:register_mob("mobs_mc:creeper", { if self._forced_explosion_countdown_timer then self._forced_explosion_countdown_timer = self._forced_explosion_countdown_timer - dtime if self._forced_explosion_countdown_timer <= 0 then - mobs:boom(self, mcl_util.get_object_center(self.object), self.explosion_strength) + local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false + mcl_explosions.explode(mcl_util.get_object_center(self.object), self.explosion_strength, { griefing = mobs_griefing, drop_chance = 1.0}, self.object) end end end, @@ -220,7 +221,8 @@ mobs:register_mob("mobs_mc:creeper_charged", { if self._forced_explosion_countdown_timer then self._forced_explosion_countdown_timer = self._forced_explosion_countdown_timer - dtime if self._forced_explosion_countdown_timer <= 0 then - mobs:boom(self, mcl_util.get_object_center(self.object), self.explosion_strength) + local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false + mcl_explosions.explode(mcl_util.get_object_center(self.object), self.explosion_strength, { griefing = mobs_griefing, drop_chance = 1.0}, self.object) end end end, From 0564121183177331901cb5a99e501500f086e535 Mon Sep 17 00:00:00 2001 From: iliekprogrammar Date: Fri, 12 Nov 2021 02:28:27 +0800 Subject: [PATCH 205/271] Code style for #1890 --- mods/PLAYER/mcl_hunger/init.lua | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index e54fb2fb2..21c1e0860 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -134,38 +134,37 @@ minetest.register_on_player_hpchange(function(player, hp_change) end end) - - - -local food_tick_timers = {} --one food_tick_timer per player, keys are the player-objects +local food_tick_timers = {} -- one food_tick_timer per player, keys are the player-objects minetest.register_globalstep(function(dtime) for _,player in pairs(minetest.get_connected_players()) do - + local food_tick_timer = food_tick_timers[player] and food_tick_timers[player] + dtime or 0 local player_name = player:get_player_name() local food_level = mcl_hunger.get_hunger(player) local food_saturation_level = mcl_hunger.get_saturation(player) local player_health = player:get_hp() - + if food_tick_timer > 4.0 then food_tick_timer = 0 - - if food_level >= 18 then --slow regenration + + if food_level >= 18 then -- slow regenration if player_health > 0 and player_health < 20 then player:set_hp(player_health+1) mcl_hunger.exhaust(player_name, mcl_hunger.EXHAUST_REGEN) mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) end - - elseif food_level == 0 then --starvation - local maximum_starvation = 1 --the amount of health at which a player will stop to get harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) + + elseif food_level == 0 then -- starvation + -- the amount of health at which a player will stop to get + -- harmed by starvation (10 for Easy, 1 for Normal, 0 for Hard) + local maximum_starvation = 1 -- TODO: implement Minecraft-like difficulty modes and the update maximumStarvation here if player_health > maximum_starvation then mcl_util.deal_damage(player, 1, {type = "starve"}) end end - - elseif food_tick_timer > 0.5 and food_level == 20 and food_saturation_level >= 6 then --fast regeneration + + elseif food_tick_timer > 0.5 and food_level == 20 and food_saturation_level >= 6 then -- fast regeneration if player_health > 0 and player_health < 20 then food_tick_timer = 0 player:set_hp(player_health+1) @@ -173,8 +172,8 @@ minetest.register_globalstep(function(dtime) mcl_hunger.update_exhaustion_hud(player, mcl_hunger.get_exhaustion(player)) end end - - food_tick_timers[player] = food_tick_timer --update food_tick_timer table + + food_tick_timers[player] = food_tick_timer -- update food_tick_timer table end end) From 740f7583ef991e59b8f62ce3344744515aa2f10d Mon Sep 17 00:00:00 2001 From: iliekprogrammar Date: Fri, 12 Nov 2021 02:49:18 +0800 Subject: [PATCH 206/271] Add Dieter44 to CREDITS.md --- CREDITS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.md b/CREDITS.md index dfbe58375..1381b1c37 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -67,6 +67,7 @@ * SmallJoker * Sven792 * aldum +* Dieter44 ## MineClone5 * kay27 From 2a08f3143561d52e01fad66a5b4dadd1b765b0a2 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 12 Nov 2021 14:09:59 +0000 Subject: [PATCH 207/271] Use particlespawners for better performance (sponge particles) --- mods/ITEMS/mcl_sponges/init.lua | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_sponges/init.lua b/mods/ITEMS/mcl_sponges/init.lua index a1998ecb0..e9755479b 100644 --- a/mods/ITEMS/mcl_sponges/init.lua +++ b/mods/ITEMS/mcl_sponges/init.lua @@ -115,16 +115,22 @@ function place_wet_sponge(itemstack, placer, pointed_thing) if mcl_worlds.pos_to_dimension(pointed_thing.above) == "nether" then minetest.item_place_node(ItemStack("mcl_sponges:sponge"), placer, pointed_thing) local pos = pointed_thing.above - for n = 0, 25 do - minetest.add_particle({ - pos = {x = pos.x + math.random(-1, 1)*math.random()/2, y = pos.y + 0.6, z = pos.z + math.random(-1, 1)*math.random()/2}, - velocity = {x = 0, y = math.random(), z = 0}, - acceleration = {x=0, y=0, z=0}, - expirationtime = math.random(), + + for n = 1, 5 do + minetest.add_particlespawner({ + amount = 5, + time = 0.1, + minpos = vector.offset(pos, -0.5, 0.6, -0.5), + maxpos = vector.offset(pos, 0.5, 0.6, 0.5), + minvel = vector.new(0, 0.1, 0), + maxvel = vector.new(0, 1, 0), + minexptime = 0.1, + maxexptime = 1, + minsize = 2, + maxsize = 5, collisiondetection = false, vertical = false, - size = math.random(2, 5), - texture = "mcl_particles_sponge"..math.random(1, 5)..".png", + texture = "mcl_particles_sponge" .. n .. ".png", }) end if not minetest.is_creative_enabled(name) then From 490e40d042325302dd5a7e58880cba82be514937 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 12 Nov 2021 15:41:09 +0000 Subject: [PATCH 208/271] Bone meal particles: add some velocity, correct glow --- mods/ITEMS/mcl_dye/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 2b4d8a2f2..dfb962446 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -137,8 +137,8 @@ function mcl_dye.add_bone_meal_particle(pos, def) time = def.time or 0.1, minpos = def.minpos or vector.subtract(pos, 0.5), maxpos = def.maxpos or vector.add(pos, 0.5), - minvel = def.minvel or vector.new(0, 0, 0), - maxvel = def.maxvel or vector.new(0, 0, 0), + minvel = def.minvel or vector.new(-0.01, 0.01, -0.01), + maxvel = def.maxvel or vector.new(0.01, 0.01, 0.01), minacc = def.minacc or vector.new(0, 0, 0), maxacc = def.maxacc or vector.new(0, 0, 0), minexptime = def.minexptime or 1, @@ -146,7 +146,7 @@ function mcl_dye.add_bone_meal_particle(pos, def) minsize = def.minsize or 0.7, maxsize = def.maxsize or 2.4, texture = "mcl_particles_bonemeal.png^[colorize:#00EE00:125", -- TODO: real MC color - glow = def.glow or 5, + glow = def.glow or 1, }) end From 0cc0a7e01de8fc00dd63eab1b960701940719a66 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 12 Nov 2021 17:49:27 +0000 Subject: [PATCH 209/271] Make dripping particles MC-like --- mods/ENTITIES/drippingwater/init.lua | 167 ++++++++++----------------- 1 file changed, 59 insertions(+), 108 deletions(-) diff --git a/mods/ENTITIES/drippingwater/init.lua b/mods/ENTITIES/drippingwater/init.lua index e17bdda40..a4855acdc 100644 --- a/mods/ENTITIES/drippingwater/init.lua +++ b/mods/ENTITIES/drippingwater/init.lua @@ -1,114 +1,65 @@ ---Dripping Water Mod ---by kddekadenz +-- Dripping Water Mod +-- by kddekadenz local math = math -- License of code, textures & sounds: CC0 ---Drop entities +local function register_drop(liquid, glow, sound, nodes) + minetest.register_entity("drippingwater:drop_" .. liquid, { + hp_max = 1, + physical = true, + collide_with_objects = false, + collisionbox = {-0.01, 0.01, -0.01, 0.01, 0.01, 0.01}, + glow = glow, + pointable = false, + visual = "sprite", + visual_size = {x = 0.1, y = 0.1}, + textures = {""}, + spritediv = {x = 1, y = 1}, + initial_sprite_basepos = {x = 0, y = 0}, + static_save = false, + _dropped = false, + on_activate = function(self) + self.object:set_properties({ + textures = {"[combine:2x2:" .. -math.random(1, 16) .. "," .. -math.random(1, 16) .. "=default_" .. liquid .. "_source_animated.png"} + }) + end, + on_step = function(self, dtime) + local k = math.random(1, 222) + local ownpos = self.object:get_pos() + if k == 1 then + self.object:set_acceleration(vector.new(0, -5, 0)) + end + if minetest.get_node(vector.offset(ownpos, 0, 0.5, 0)).name == "air" then + self.object:set_acceleration(vector.new(0, -5, 0)) + end + if minetest.get_node(vector.offset(ownpos, 0, -0.1, 0)).name ~= "air" then + if not self.object:get_luaentity()._dropped then + self.object:get_luaentity()._dropped = true + minetest.sound_play({name = "drippingwater_" .. sound .. "drip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}, true) + end + if k < 3 then + self.object:remove() + end + end + end, + }) + minetest.register_abm({ + label = "Create drops", + nodenames = nodes, + neighbors = {"group:" .. liquid}, + interval = 2, + chance = 22, + action = function(pos) + if minetest.get_item_group(minetest.get_node(vector.offset(pos, 0, 1, 0)).name, liquid) ~= 0 + and minetest.get_node(vector.offset(pos, 0, -1, 0)).name == "air" then + local x, z = math.random(-45, 45) / 100, math.random(-45, 45) / 100 + minetest.add_entity(vector.offset(pos, x, -0.520, z), "drippingwater:drop_" .. liquid) + end + end, + }) +end ---water - -local water_tex = "default_water_source_animated.png^[verticalframe:16:0" -minetest.register_entity("drippingwater:drop_water", { - hp_max = 1, - physical = true, - collide_with_objects = false, - collisionbox = {-0.025,-0.05,-0.025,0.025,-0.01,0.025}, - pointable = false, - visual = "cube", - visual_size = {x=0.05, y=0.1}, - textures = {water_tex, water_tex, water_tex, water_tex, water_tex, water_tex}, - spritediv = {x=1, y=1}, - initial_sprite_basepos = {x=0, y=0}, - static_save = false, - on_activate = function(self, staticdata) - self.object:set_sprite({x=0,y=0}, 1, 1, true) - end, - on_step = function(self, dtime) - local k = math.random(1,222) - local ownpos = self.object:get_pos() - if k==1 then - self.object:set_acceleration({x=0, y=-5, z=0}) - end - if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then - self.object:set_acceleration({x=0, y=-5, z=0}) - end - if minetest.get_node({x=ownpos.x, y=ownpos.y -0.5, z=ownpos.z}).name ~= "air" then - self.object:remove() - minetest.sound_play({name="drippingwater_drip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}, true) - end - end, -}) - - ---lava - -local lava_tex = "default_lava_source_animated.png^[verticalframe:16:0" -minetest.register_entity("drippingwater:drop_lava", { - hp_max = 1, - physical = true, - collide_with_objects = false, - collisionbox = {-0.025,-0.05,-0.025,0.025,-0.01,0.025}, - glow = math.max(7, minetest.registered_nodes["mcl_core:lava_source"].light_source - 3), - pointable = false, - visual = "cube", - visual_size = {x=0.05, y=0.1}, - textures = {lava_tex, lava_tex, lava_tex, lava_tex, lava_tex, lava_tex}, - spritediv = {x=1, y=1}, - initial_sprite_basepos = {x=0, y=0}, - static_save = false, - on_activate = function(self, staticdata) - self.object:set_sprite({x=0,y=0}, 1, 0, true) - end, - on_step = function(self, dtime) - local k = math.random(1,222) - local ownpos = self.object:get_pos() - if k == 1 then - self.object:set_acceleration({x=0, y=-5, z=0}) - end - if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then - self.object:set_acceleration({x=0, y=-5, z=0}) - end - if minetest.get_node({x=ownpos.x, y=ownpos.y -0.5, z=ownpos.z}).name ~= "air" then - self.object:remove() - minetest.sound_play({name="drippingwater_lavadrip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}, true) - end - end, -}) - - - ---Create drop - -minetest.register_abm({ - label = "Create water drops", - nodenames = {"group:opaque", "group:leaves"}, - neighbors = {"group:water"}, - interval = 2, - chance = 22, - action = function(pos) - if minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name, "water") ~= 0 - and minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "air" then - local i = math.random(-45,45) / 100 - minetest.add_entity({x=pos.x + i, y=pos.y - 0.501, z=pos.z + i}, "drippingwater:drop_water") - end - end, -}) - ---Create lava drop - -minetest.register_abm({ - label = "Create lava drops", - nodenames = {"group:opaque"}, - neighbors = {"group:lava"}, - interval = 2, - chance = 22, - action = function(pos) - if minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name, "lava") ~= 0 - and minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "air" then - local i = math.random(-45,45) / 100 - minetest.add_entity({x=pos.x + i, y=pos.y - 0.501, z=pos.z + i}, "drippingwater:drop_lava") - end - end, -}) \ No newline at end of file +register_drop("water", 1, "", {"group:opaque", "group:leaves"}) +register_drop("lava", math.max(7, minetest.registered_nodes["mcl_core:lava_source"].light_source - 3), "lava", {"group:opaque"}) \ No newline at end of file From 7ed964756e1798ba7e2feb6b3459e1fb66dae914 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 12 Nov 2021 18:00:04 +0000 Subject: [PATCH 210/271] local luaentity --- mods/ENTITIES/drippingwater/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/drippingwater/init.lua b/mods/ENTITIES/drippingwater/init.lua index a4855acdc..45a211d8f 100644 --- a/mods/ENTITIES/drippingwater/init.lua +++ b/mods/ENTITIES/drippingwater/init.lua @@ -35,8 +35,9 @@ local function register_drop(liquid, glow, sound, nodes) self.object:set_acceleration(vector.new(0, -5, 0)) end if minetest.get_node(vector.offset(ownpos, 0, -0.1, 0)).name ~= "air" then - if not self.object:get_luaentity()._dropped then - self.object:get_luaentity()._dropped = true + local ent = self.object:get_luaentity() + if not ent._dropped then + ent._dropped = true minetest.sound_play({name = "drippingwater_" .. sound .. "drip"}, {pos = ownpos, gain = 0.5, max_hear_distance = 8}, true) end if k < 3 then From 5515e2baa169ee3e5e2fe55043f8fe3272a5269a Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 12 Nov 2021 21:49:47 +0000 Subject: [PATCH 211/271] Add 64 items to inventory when creative is on --- mods/HUD/mcl_inventory/creative.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 2be0be4bc..43301ce0b 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -667,3 +667,9 @@ minetest.register_on_joinplayer(function(player) init(player) mcl_inventory.set_creative_formspec(player, 0, 1, nil, false, "nix", "") end) + +minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info) + if minetest.is_creative_enabled(player:get_player_name()) and action == "put" and inventory_info.listname == "main" then + player:get_inventory():set_stack("main", inventory_info.index, inventory_info.stack:get_name() .. " 64") + end +end) From 96c4fb60d8641b4181edb902ed24dbf173828d09 Mon Sep 17 00:00:00 2001 From: iliekprogrammar Date: Sat, 13 Nov 2021 10:46:16 +0800 Subject: [PATCH 212/271] Fix crash on startup during immediate runtime by mcl_burning The crash occurs if mcl_burning:data is deserialized to nil. The cause of mcl_burning being set to "return nil" is unknown. Therefore, when it occurs, it will be logged as warning. --- mods/ENTITIES/mcl_burning/init.lua | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mods/ENTITIES/mcl_burning/init.lua b/mods/ENTITIES/mcl_burning/init.lua index 313e75dca..a47824537 100644 --- a/mods/ENTITIES/mcl_burning/init.lua +++ b/mods/ENTITIES/mcl_burning/init.lua @@ -44,18 +44,18 @@ minetest.register_on_respawnplayer(function(player) mcl_burning.extinguish(player) end) -minetest.register_on_joinplayer(function(player) - local storage - - local burn_data = player:get_meta():get_string("mcl_burning:data") - if burn_data == "" then - storage = {} - else - storage = minetest.deserialize(burn_data) +function mcl_burning.init_player(player) + local meta = player:get_meta() + -- NOTE: mcl_burning:data may be "return nil" (which deserialize into nil) for reasons unknown. + if meta:get_string("mcl_burning:data"):find("return nil", 1, true) then + minetest.log("warning", "[mcl_burning] 'mcl_burning:data' player meta field is invalid! Please report this bug") end - - mcl_burning.storage[player] = storage + mcl_burning.storage[player] = meta:contains("mcl_burning:data") and minetest.deserialize(meta:get_string("mcl_burning:data")) or {} mcl_burning.channels[player] = minetest.mod_channel_join("mcl_burning:" .. player:get_player_name()) +end + +minetest.register_on_joinplayer(function(player) + mcl_burning.init_player(player) end) minetest.register_on_leaveplayer(function(player) From bd1491854369913b8e1373dd5cadcd7280415535 Mon Sep 17 00:00:00 2001 From: iliekprogrammar Date: Sat, 13 Nov 2021 12:12:20 +0800 Subject: [PATCH 213/271] Reduce defuse reach for charged creeper 5.2 is actually half of the estimated MC creeper defuse range, which is 10.4. The reason for this change is to balance the creeper in MCL2 where it fuses whilst moving making it more difficult than MC. In MC, the creeper does not move while fusing. --- mods/ENTITIES/mobs_mc/creeper.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 1e23231c1..a7e33d1bd 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -189,7 +189,7 @@ mobs:register_mob("mobs_mc:creeper_charged", { --explosion_damage_radius = 6, --explosiontimer_reset_radius = 3, reach = 3, - defuse_reach = 10.4, + defuse_reach = 5.2, explosion_timer = 0.3, allow_fuse_reset = true, stop_to_explode = true, From ae8068cca671f5e215045fa4227e05b21fe5ebc5 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 13 Nov 2021 11:17:46 +0000 Subject: [PATCH 214/271] Use stack_max instead of 64 for all items --- mods/HUD/mcl_inventory/creative.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 43301ce0b..4f9f1685a 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -670,6 +670,7 @@ end) minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info) if minetest.is_creative_enabled(player:get_player_name()) and action == "put" and inventory_info.listname == "main" then - player:get_inventory():set_stack("main", inventory_info.index, inventory_info.stack:get_name() .. " 64") + local stack = inventory_info.stack + player:get_inventory():set_stack("main", inventory_info.index, stack:get_name() .. " " .. stack:get_stack_max()) end -end) +end) \ No newline at end of file From d4da8555708f2db411cbd0352cc4d7e62b7ee99d Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 13 Nov 2021 12:25:10 +0000 Subject: [PATCH 215/271] Add button to switch between max stack size and just one item --- mods/HUD/mcl_inventory/creative.lua | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 4f9f1685a..de03886d9 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -289,6 +289,17 @@ filtername["inv"] = S("Survival Inventory") bg["default"] = dark_bg end]] +local function get_stack_size(player) + return player:get_meta():get_int("switch_stack") +end + +local function set_stack_size(player, n) + player:get_meta():set_int("switch_stack", n) +end + +minetest.register_on_newplayer(function (player) + set_stack_size(player, 64) +end) function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, show, page, filter) --reset_menu_item_bg() @@ -349,6 +360,11 @@ function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, armor_slot_imgs = armor_slot_imgs .. "image[5.5,2.75;1,1;mcl_inventory_empty_armor_slot_boots.png]" end + local switch_overlay = "blank.png" + if get_stack_size(player) == 64 then + switch_overlay = "mcl_inventory_button_switch_stack.png" + end + -- Survival inventory slots main_list = "list[current_player;main;0,3.75;9,3;9]".. mcl_formspec.get_itemslot_bg(0,3.75,9,3).. @@ -376,7 +392,10 @@ function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, -- achievements button "image_button[9,4;1,1;mcl_achievements_button.png;__mcl_achievements;]".. --"style_type[image_button;border=;bgimg=;bgimg_pressed=]".. - "tooltip[__mcl_achievements;"..F(S("Achievements")).."]" + "tooltip[__mcl_achievements;"..F(S("Achievements")).."]".. + -- switch stack size button + "image_button[9,5;1,1;default_apple.png^" .. switch_overlay .. ";__switch_stack;]".. + "tooltip[__switch_stack;"..F(S("Switch stack size")).."]" -- For shortcuts listrings = listrings .. @@ -544,6 +563,12 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) elseif fields.search and not fields.creative_next and not fields.creative_prev then set_inv_search(string.lower(fields.search),player) page = "nix" + elseif fields.__switch_stack then + local switch = 1 + if get_stack_size(player) == 1 then + switch = 64 + end + set_stack_size(player, switch) end if page then @@ -669,7 +694,7 @@ minetest.register_on_joinplayer(function(player) end) minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info) - if minetest.is_creative_enabled(player:get_player_name()) and action == "put" and inventory_info.listname == "main" then + if minetest.is_creative_enabled(player:get_player_name()) and action == "put" and inventory_info.listname == "main" and get_stack_size(player) == 64 then local stack = inventory_info.stack player:get_inventory():set_stack("main", inventory_info.index, stack:get_name() .. " " .. stack:get_stack_max()) end From d7e59f6a359c2bb371e63829b51f74ae685735ab Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 13 Nov 2021 12:26:01 +0000 Subject: [PATCH 216/271] Add switch stack size overlay texture --- .../mcl_inventory_button_switch_stack.png | Bin 0 -> 8936 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_button_switch_stack.png diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_button_switch_stack.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_button_switch_stack.png new file mode 100644 index 0000000000000000000000000000000000000000..ac56d833d0c6c4efcb9633794ffc9d767247d962 GIT binary patch literal 8936 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 Date: Sat, 13 Nov 2021 15:19:34 +0000 Subject: [PATCH 217/271] localize wielditem in crossbow.lua (Fix #1901) --- mods/ITEMS/mcl_bows/crossbow.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_bows/crossbow.lua b/mods/ITEMS/mcl_bows/crossbow.lua index e3124156b..5ae21a1f3 100644 --- a/mods/ITEMS/mcl_bows/crossbow.lua +++ b/mods/ITEMS/mcl_bows/crossbow.lua @@ -92,7 +92,7 @@ local function get_arrow(player) return arrow_stack, arrow_stack_id end -local function player_shoot_arrow(itemstack, player, power, damage, is_critical) +local function player_shoot_arrow(wielditem, player, power, damage, is_critical) local has_multishot_enchantment = mcl_enchanting.has_enchantment(player:get_wielded_item(), "multishot") local arrow_itemstring = wielditem:get_meta():get("arrow") @@ -286,7 +286,7 @@ end) controls.register_on_press(function(player, key, time) if key~="LMB" then return end - wielditem = player:get_wielded_item() + local wielditem = player:get_wielded_item() if wielditem:get_name()=="mcl_bows:crossbow_loaded" or wielditem:get_name()=="mcl_bows:crossbow_loaded_enchanted" then local enchanted = mcl_enchanting.is_enchanted(wielditem:get_name()) local speed, damage From bcb6251d2058d46ca75cb262fd2628ea44526731 Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 13 Nov 2021 17:26:17 +0000 Subject: [PATCH 218/271] Use label instead of extra texture --- mods/HUD/mcl_inventory/creative.lua | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index de03886d9..a3314ec0a 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -1,5 +1,6 @@ local S = minetest.get_translator(minetest.get_current_modname()) local F = minetest.formspec_escape +local C = minetest.colorize -- Prepare player info table local players = {} @@ -360,11 +361,8 @@ function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, armor_slot_imgs = armor_slot_imgs .. "image[5.5,2.75;1,1;mcl_inventory_empty_armor_slot_boots.png]" end - local switch_overlay = "blank.png" - if get_stack_size(player) == 64 then - switch_overlay = "mcl_inventory_button_switch_stack.png" - end - + local stack_size = get_stack_size(player) + -- Survival inventory slots main_list = "list[current_player;main;0,3.75;9,3;9]".. mcl_formspec.get_itemslot_bg(0,3.75,9,3).. @@ -394,8 +392,9 @@ function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, --"style_type[image_button;border=;bgimg=;bgimg_pressed=]".. "tooltip[__mcl_achievements;"..F(S("Achievements")).."]".. -- switch stack size button - "image_button[9,5;1,1;default_apple.png^" .. switch_overlay .. ";__switch_stack;]".. - "tooltip[__switch_stack;"..F(S("Switch stack size")).."]" + "image_button[9,5;1,1;default_apple.png;__switch_stack;]".. + "label[9.4,5.4;".. F(C("#FFFFFF", stack_size ~= 1 and stack_size or "")) .."]".. + "tooltip[__switch_stack;"..F(S("Switch stack size")).."]" -- For shortcuts listrings = listrings .. From add97d39a6171ee5bc20c829dc98074d37fcc14f Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 13 Nov 2021 17:28:13 +0000 Subject: [PATCH 219/271] delete overlay texture --- .../mcl_inventory_button_switch_stack.png | Bin 8936 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/HUD/mcl_inventory/textures/mcl_inventory_button_switch_stack.png diff --git a/mods/HUD/mcl_inventory/textures/mcl_inventory_button_switch_stack.png b/mods/HUD/mcl_inventory/textures/mcl_inventory_button_switch_stack.png deleted file mode 100644 index ac56d833d0c6c4efcb9633794ffc9d767247d962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8936 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 Date: Sat, 13 Nov 2021 18:56:52 +0000 Subject: [PATCH 220/271] Use on_joinplayer instead of on_newplayer --- mods/HUD/mcl_inventory/creative.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index a3314ec0a..d2dedd556 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -291,15 +291,17 @@ filtername["inv"] = S("Survival Inventory") end]] local function get_stack_size(player) - return player:get_meta():get_int("switch_stack") + return player:get_meta():get_int("mcl_inventory:switch_stack") end local function set_stack_size(player, n) - player:get_meta():set_int("switch_stack", n) + player:get_meta():set_int("mcl_inventory:switch_stack", n) end -minetest.register_on_newplayer(function (player) - set_stack_size(player, 64) +minetest.register_on_joinplayer(function (player) + if get_stack_size(player) == 0 then + set_stack_size(player, 64) + end end) function mcl_inventory.set_creative_formspec(player, start_i, pagenum, inv_size, show, page, filter) From 7ef6613f0967718463e9be3f1f90f97811d8346a Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 15 Nov 2021 21:39:43 +0100 Subject: [PATCH 221/271] Rename drippingwater mod to mcl_dripping --- .../{drippingwater => mcl_dripping}/init.lua | 0 .../{drippingwater => mcl_dripping}/mod.conf | 0 .../{drippingwater => mcl_dripping}/readme.txt | 0 .../sounds/drippingwater_drip.1.ogg | Bin .../sounds/drippingwater_drip.2.ogg | Bin .../sounds/drippingwater_drip.3.ogg | Bin .../sounds/drippingwater_lavadrip.1.ogg | Bin .../sounds/drippingwater_lavadrip.2.ogg | Bin .../sounds/drippingwater_lavadrip.3.ogg | Bin 9 files changed, 0 insertions(+), 0 deletions(-) rename mods/ENTITIES/{drippingwater => mcl_dripping}/init.lua (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/mod.conf (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/readme.txt (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/sounds/drippingwater_drip.1.ogg (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/sounds/drippingwater_drip.2.ogg (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/sounds/drippingwater_drip.3.ogg (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/sounds/drippingwater_lavadrip.1.ogg (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/sounds/drippingwater_lavadrip.2.ogg (100%) rename mods/ENTITIES/{drippingwater => mcl_dripping}/sounds/drippingwater_lavadrip.3.ogg (100%) diff --git a/mods/ENTITIES/drippingwater/init.lua b/mods/ENTITIES/mcl_dripping/init.lua similarity index 100% rename from mods/ENTITIES/drippingwater/init.lua rename to mods/ENTITIES/mcl_dripping/init.lua diff --git a/mods/ENTITIES/drippingwater/mod.conf b/mods/ENTITIES/mcl_dripping/mod.conf similarity index 100% rename from mods/ENTITIES/drippingwater/mod.conf rename to mods/ENTITIES/mcl_dripping/mod.conf diff --git a/mods/ENTITIES/drippingwater/readme.txt b/mods/ENTITIES/mcl_dripping/readme.txt similarity index 100% rename from mods/ENTITIES/drippingwater/readme.txt rename to mods/ENTITIES/mcl_dripping/readme.txt diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.1.ogg b/mods/ENTITIES/mcl_dripping/sounds/drippingwater_drip.1.ogg similarity index 100% rename from mods/ENTITIES/drippingwater/sounds/drippingwater_drip.1.ogg rename to mods/ENTITIES/mcl_dripping/sounds/drippingwater_drip.1.ogg diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.2.ogg b/mods/ENTITIES/mcl_dripping/sounds/drippingwater_drip.2.ogg similarity index 100% rename from mods/ENTITIES/drippingwater/sounds/drippingwater_drip.2.ogg rename to mods/ENTITIES/mcl_dripping/sounds/drippingwater_drip.2.ogg diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.3.ogg b/mods/ENTITIES/mcl_dripping/sounds/drippingwater_drip.3.ogg similarity index 100% rename from mods/ENTITIES/drippingwater/sounds/drippingwater_drip.3.ogg rename to mods/ENTITIES/mcl_dripping/sounds/drippingwater_drip.3.ogg diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.1.ogg b/mods/ENTITIES/mcl_dripping/sounds/drippingwater_lavadrip.1.ogg similarity index 100% rename from mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.1.ogg rename to mods/ENTITIES/mcl_dripping/sounds/drippingwater_lavadrip.1.ogg diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.2.ogg b/mods/ENTITIES/mcl_dripping/sounds/drippingwater_lavadrip.2.ogg similarity index 100% rename from mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.2.ogg rename to mods/ENTITIES/mcl_dripping/sounds/drippingwater_lavadrip.2.ogg diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.3.ogg b/mods/ENTITIES/mcl_dripping/sounds/drippingwater_lavadrip.3.ogg similarity index 100% rename from mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.3.ogg rename to mods/ENTITIES/mcl_dripping/sounds/drippingwater_lavadrip.3.ogg From d2a03ec0b91c7e5580daab13cea2b585501e50d6 Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 15 Nov 2021 21:44:23 +0100 Subject: [PATCH 222/271] Rename entity ids --- mods/ENTITIES/mcl_dripping/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_dripping/init.lua b/mods/ENTITIES/mcl_dripping/init.lua index 45a211d8f..57ba7ecfe 100644 --- a/mods/ENTITIES/mcl_dripping/init.lua +++ b/mods/ENTITIES/mcl_dripping/init.lua @@ -6,7 +6,7 @@ local math = math -- License of code, textures & sounds: CC0 local function register_drop(liquid, glow, sound, nodes) - minetest.register_entity("drippingwater:drop_" .. liquid, { + minetest.register_entity("mcl_dripping:drop_" .. liquid, { hp_max = 1, physical = true, collide_with_objects = false, @@ -56,7 +56,7 @@ local function register_drop(liquid, glow, sound, nodes) if minetest.get_item_group(minetest.get_node(vector.offset(pos, 0, 1, 0)).name, liquid) ~= 0 and minetest.get_node(vector.offset(pos, 0, -1, 0)).name == "air" then local x, z = math.random(-45, 45) / 100, math.random(-45, 45) / 100 - minetest.add_entity(vector.offset(pos, x, -0.520, z), "drippingwater:drop_" .. liquid) + minetest.add_entity(vector.offset(pos, x, -0.520, z), "mcl_dripping:drop_" .. liquid) end end, }) From a9804879e208de4c8774498d05bb17a5ff0facaf Mon Sep 17 00:00:00 2001 From: NO11 Date: Mon, 15 Nov 2021 21:54:16 +0100 Subject: [PATCH 223/271] Rename drippingwater to mcl_dripping in mod.conf and readme.txt --- mods/ENTITIES/mcl_dripping/mod.conf | 2 +- mods/ENTITIES/mcl_dripping/readme.txt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_dripping/mod.conf b/mods/ENTITIES/mcl_dripping/mod.conf index 1de118f4c..921d5e59f 100644 --- a/mods/ENTITIES/mcl_dripping/mod.conf +++ b/mods/ENTITIES/mcl_dripping/mod.conf @@ -1,4 +1,4 @@ -name = drippingwater +name = mcl_dripping author = kddekadenz description = Drops are generated rarely under solid nodes depends = mcl_core diff --git a/mods/ENTITIES/mcl_dripping/readme.txt b/mods/ENTITIES/mcl_dripping/readme.txt index f609163ed..afe35608e 100644 --- a/mods/ENTITIES/mcl_dripping/readme.txt +++ b/mods/ENTITIES/mcl_dripping/readme.txt @@ -1,12 +1,12 @@ -Dripping Water Mod +Dripping Mod by kddekadenz -modified for MineClone 2 by Wuzzy +modified for MineClone 2 by Wuzzy and NO11 Installing instructions: - 1. Copy the drippingwater mod folder into games/gamemode/mods + 1. Copy the mcl_dripping mod folder into games/gamemode/mods 2. Start game and enjoy :) From c757e98b4fbd9110d5afbcda53f4fcc37131ea84 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 17 Nov 2021 00:37:11 +0100 Subject: [PATCH 224/271] Fix #1911, error in lightning callback --- mods/ENVIRONMENT/lightning/init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 83494462f..3579316e8 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -215,7 +215,9 @@ lightning.register_on_strike(function(pos, pos2, objects) posadd = { x=math.cos(angle),y=0,z=math.sin(angle) } posadd = vector.normalize(posadd) local mob = add_entity(vector.add(pos2, posadd), "mobs_mc:skeleton") - mob:set_yaw(angle-math.pi/2) + if mob then + mob:set_yaw(angle-math.pi/2) + end angle = angle + (math.pi*2) / 3 end From 9919011aca6fbcf9cbb086d8260e4da0d1de3625 Mon Sep 17 00:00:00 2001 From: NO11 Date: Wed, 17 Nov 2021 16:43:48 +0100 Subject: [PATCH 225/271] Fix enchanted books losing their enchantments in creative inventory --- mods/HUD/mcl_inventory/creative.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index d2dedd556..76139160b 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -695,8 +695,9 @@ minetest.register_on_joinplayer(function(player) end) minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info) - if minetest.is_creative_enabled(player:get_player_name()) and action == "put" and inventory_info.listname == "main" and get_stack_size(player) == 64 then - local stack = inventory_info.stack - player:get_inventory():set_stack("main", inventory_info.index, stack:get_name() .. " " .. stack:get_stack_max()) + local stack = inventory_info.stack + local item = stack:get_name() + if minetest.is_creative_enabled(player:get_player_name()) and action == "put" and inventory_info.listname == "main" and get_stack_size(player) == 64 and not item:find("mcl_enchanting:book_enchanted") then + player:get_inventory():set_stack("main", inventory_info.index, item .. " " .. stack:get_stack_max()) end end) \ No newline at end of file From 30528b0a2c4fb0cd54f30dfe0ba38d568a2f9b18 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 17 Nov 2021 18:25:12 +0100 Subject: [PATCH 226/271] Fix crash when opening a chest with an unknown node on top --- mods/ITEMS/mcl_chests/init.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 69f6a601d..7a0e54c69 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -608,10 +608,12 @@ local function register_chest(basename, desc, longdesc, usagehelp, tt_help, tile on_rightclick = function(pos, node, clicker) local pos_other = mcl_util.get_double_container_neighbor_pos(pos, node.param2, "left") - if minetest.registered_nodes[minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name].groups.opaque == 1 - or minetest.registered_nodes[minetest.get_node({x = pos_other.x, y = pos_other.y + 1, z = pos_other.z}).name].groups.opaque == 1 then - -- won't open if there is no space from the top - return false + local above_def = minetest.registered_nodes[minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name] + local above_def_other = minetest.registered_nodes[minetest.get_node({x = pos_other.x, y = pos_other.y + 1, z = pos_other.z}).name] + + if not above_def or above_def.groups.opaque == 1 or not above_def_other or above_def_other.groups.opaque == 1 then + -- won't open if there is no space from the top + return false end local name = minetest.get_meta(pos):get_string("name") From 903d1777be98e62e1f9c11aedcda8236688dc796 Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 18 Nov 2021 17:40:32 +0100 Subject: [PATCH 227/271] Use set_count instead of creating a new item and checking for enchanted books --- mods/HUD/mcl_inventory/creative.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 76139160b..f5a9574eb 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -695,9 +695,9 @@ minetest.register_on_joinplayer(function(player) end) minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info) - local stack = inventory_info.stack - local item = stack:get_name() - if minetest.is_creative_enabled(player:get_player_name()) and action == "put" and inventory_info.listname == "main" and get_stack_size(player) == 64 and not item:find("mcl_enchanting:book_enchanted") then - player:get_inventory():set_stack("main", inventory_info.index, item .. " " .. stack:get_stack_max()) + if minetest.is_creative_enabled(player:get_player_name()) and get_stack_size(player) == 64 and action == "put" and inventory_info.listname == "main" then + local stack = inventory_info.stack + stack:set_count(stack:get_stack_max()) + player:get_inventory():set_stack("main", inventory_info.index, stack) end -end) \ No newline at end of file +end) From b0aceae73dbfc3405b4b3a3d0db63e759e9a48f1 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Fri, 19 Nov 2021 15:22:40 +0100 Subject: [PATCH 228/271] Fix reference dupe glitches --- mods/ITEMS/mcl_chests/init.lua | 4 ++-- mods/ITEMS/mcl_furnaces/init.lua | 4 ++-- mods/ITEMS/mcl_hoppers/init.lua | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 7a0e54c69..d87ae2a1d 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -293,7 +293,7 @@ local function register_chest(basename, desc, longdesc, usagehelp, tt_help, tile local function drop_items_chest(pos, oldnode, oldmetadata) local meta = minetest.get_meta(pos) - local meta2 = meta + local meta2 = meta:to_table() if oldmetadata then meta:from_table(oldmetadata) end @@ -305,7 +305,7 @@ local function register_chest(basename, desc, longdesc, usagehelp, tt_help, tile minetest.add_item(p, stack) end end - meta:from_table(meta2:to_table()) + meta:from_table(meta2) end local function on_chest_blast(pos) diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index dca476762..9f836d161 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -461,7 +461,7 @@ minetest.register_node("mcl_furnaces:furnace", { on_timer = furnace_node_timer, after_dig_node = function(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) - local meta2 = meta + local meta2 = meta:to_table() meta:from_table(oldmetadata) local inv = meta:get_inventory() for _, listname in ipairs({"src", "dst", "fuel"}) do @@ -471,7 +471,7 @@ minetest.register_node("mcl_furnaces:furnace", { minetest.add_item(p, stack) end end - meta:from_table(meta2:to_table()) + meta:from_table(meta2) end, on_construct = function(pos) diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index 9defa26ca..f9ba1a8c8 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -61,7 +61,7 @@ local def_hopper = { after_dig_node = function(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) - local meta2 = meta + local meta2 = meta:to_table() meta:from_table(oldmetadata) local inv = meta:get_inventory() for i=1,inv:get_size("main") do @@ -71,7 +71,7 @@ local def_hopper = { minetest.add_item(p, stack) end end - meta:from_table(meta2:to_table()) + meta:from_table(meta2) end, allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) local name = player:get_player_name() From 46394e7e1f82856c9c9de262857bb08c2d8ea820 Mon Sep 17 00:00:00 2001 From: Nils Dagsson Moskopp Date: Wed, 17 Nov 2021 18:03:45 +0100 Subject: [PATCH 229/271] Add obsidian boat that always sinks --- mods/ENTITIES/mcl_boats/init.lua | 11 ++++++----- .../textures/mcl_boats_obsidian_boat.png | Bin 0 -> 264 bytes .../textures/mcl_boats_texture_obsidian_boat.png | Bin 0 -> 535 bytes 3 files changed, 6 insertions(+), 5 deletions(-) create mode 100644 mods/ENTITIES/mcl_boats/textures/mcl_boats_obsidian_boat.png create mode 100644 mods/ENTITIES/mcl_boats/textures/mcl_boats_texture_obsidian_boat.png diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index f46c14d46..beff5fb52 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -342,7 +342,8 @@ function boat.on_step(self, dtime, moveresult) self.object:get_velocity().y) else p.y = p.y + 1 - if is_water(p) then + local is_obsidian_boat = self.object:get_luaentity()._itemstring == "mcl_boats:boat_obsidian" + if is_water(p) or is_obsidian_boat then -- Inside water: Slowly sink local y = self.object:get_velocity().y y = y - 0.01 @@ -382,13 +383,13 @@ end -- Register one entity for all boat types minetest.register_entity("mcl_boats:boat", boat) -local boat_ids = { "boat", "boat_spruce", "boat_birch", "boat_jungle", "boat_acacia", "boat_dark_oak" } -local names = { S("Oak Boat"), S("Spruce Boat"), S("Birch Boat"), S("Jungle Boat"), S("Acacia Boat"), S("Dark Oak Boat") } +local boat_ids = { "boat", "boat_spruce", "boat_birch", "boat_jungle", "boat_acacia", "boat_dark_oak", "boat_obsidian" } +local names = { S("Oak Boat"), S("Spruce Boat"), S("Birch Boat"), S("Jungle Boat"), S("Acacia Boat"), S("Dark Oak Boat"), S("Obsidian Boat") } local craftstuffs = {} if minetest.get_modpath("mcl_core") then - craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_core:darkwood" } + craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_core:darkwood", "mcl_core:obsidian" } end -local images = { "oak", "spruce", "birch", "jungle", "acacia", "dark_oak" } +local images = { "oak", "spruce", "birch", "jungle", "acacia", "dark_oak", "obsidian" } for b=1, #boat_ids do local itemstring = "mcl_boats:"..boat_ids[b] diff --git a/mods/ENTITIES/mcl_boats/textures/mcl_boats_obsidian_boat.png b/mods/ENTITIES/mcl_boats/textures/mcl_boats_obsidian_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae10c0c4b4dfd9e13a5008aa3a60c15d85b2930 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUWnt!GW8vjw7vbj<6Xi2d zmkKS7o4>X9B}5!9sH39;5nrED<_XlxQ4-`A45Yze`}3fMKt{c%i(?3ftmwgwoJ@ui ztPif=c-}efU4n(*27z}61VyG7a$J78Q1Zb82c7&jorJD>=5~Xhb|uf(y)4`@;Z9HX zmo@L?+0T0&Jox_1lrs;yS6vrZH`P3JX383uGm)3_J1d?m*@_yT+_Z%KnQQOiC2AHv oTq@g{`yQ35$bO5s%XZ-}V|t54)E+nOa*&%mUHx3vIVCg!0P{jy^8f$< literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mcl_boats/textures/mcl_boats_texture_obsidian_boat.png b/mods/ENTITIES/mcl_boats/textures/mcl_boats_texture_obsidian_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..af3c24b30e5fa0fa9937cf9f874aa43651924013 GIT binary patch literal 535 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!VDx8ekAz-DT4r?5LXsvE;bfkPIeJ~J~2@~ z19hp;(zy9sdtc%bm*bgZ1=Pz?666;Qq`_eO^Pq(c42*rAE{-7)hu>b`>vcFmB&)BTM(WJn$tN6`~Ce68JJ%+6dvU?1dC3sEtQoH{C zd;GU~xl;o<9tg#6^V-b#U|GB3vx?W}_R9x1tYJ=(iDs4f)*yRBi{Y4f85d83(gX!b zld_*DmOP)3!*^gGbF?eNgLUlL_D&)nId5o1vMVy&(E4`YzUYtiX1}I=t5&U={^gD! zgQ|Mf{HaD#droHnrDt9`d3m;_#ir7iwi#PbtHj@wYMuDjNWD5>_T1vDHLlsKR{cD6 z$o50%?BlCSeW>F z^0(Cj;o%$Q4RY`8e0wnK9QR{ehv&C%&l5LGv5)xu`H=jJgXZyfO;s;w_FM) Date: Sun, 21 Nov 2021 22:13:24 -0300 Subject: [PATCH 230/271] Fix mobs spawn count --- mods/ITEMS/mcl_mobspawners/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_mobspawners/init.lua b/mods/ITEMS/mcl_mobspawners/init.lua index 6e4b24c96..0795fb611 100644 --- a/mods/ITEMS/mcl_mobspawners/init.lua +++ b/mods/ITEMS/mcl_mobspawners/init.lua @@ -230,7 +230,7 @@ local function spawn_mobs(pos, elapsed) -- spawn up to 4 mobs in random air blocks if air then - local max = 200 + local max = 4 if spawn_count_overrides[mob] then max = spawn_count_overrides[mob] end From d3015edeb9489d8a046cd3a635acc7bff14db8f5 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 29 Nov 2021 19:12:49 +0100 Subject: [PATCH 231/271] Fix reference dupes for droppers and dispensers --- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 4 ++-- mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 4 ++-- mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 47acacbb9..0cd0608c4 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -82,7 +82,7 @@ local dispenserdef = { end, after_dig_node = function(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) - local meta2 = meta + local meta2 = meta:to_table() meta:from_table(oldmetadata) local inv = meta:get_inventory() for i=1, inv:get_size("main") do @@ -92,7 +92,7 @@ local dispenserdef = { minetest.add_item(p, stack) end end - meta:from_table(meta2:to_table()) + meta:from_table(meta2) end, _mcl_blast_resistance = 3.5, _mcl_hardness = 3.5, diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index b5bcc1d08..abb351091 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -55,7 +55,7 @@ local dropperdef = { sounds = mcl_sounds.node_sound_stone_defaults(), after_dig_node = function(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) - local meta2 = meta + local meta2 = meta:to_table() meta:from_table(oldmetadata) local inv = meta:get_inventory() for i=1, inv:get_size("main") do @@ -65,7 +65,7 @@ local dropperdef = { minetest.add_item(p, stack) end end - meta:from_table(meta2:to_table()) + meta:from_table(meta2) end, allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) local name = player:get_player_name() diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua index 5409e6abc..bd8c0a3c3 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua @@ -53,7 +53,7 @@ local dropperdef = { sounds = mcl_sounds.node_sound_stone_defaults(), after_dig_node = function(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) - local meta2 = meta + local meta2 = meta:to_table() meta:from_table(oldmetadata) local inv = meta:get_inventory() for i=1, inv:get_size("main") do @@ -63,7 +63,7 @@ local dropperdef = { minetest.add_item(p, stack) end end - meta:from_table(meta2:to_table()) + meta:from_table(meta2) end, allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) local name = player:get_player_name() From e6b200aaf3b0a56860272a57012f24ccfa7182ff Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 2 Dec 2021 16:19:59 +0100 Subject: [PATCH 232/271] Fix access to ender inventory without an ender chest --- mods/ITEMS/mcl_chests/init.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index d87ae2a1d..ad5c781f7 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -1055,6 +1055,20 @@ minetest.register_on_joinplayer(function(player) inv:set_size("enderchest", 9*3) end) +minetest.register_allow_player_inventory_action(function(player, action, inv, info) + if inv:get_location().type == "player" and ( + action == "move" and (info.from_list == "enderchest" or info.to_list == "enderchest") + or action == "put" and info.listname == "enderchest" + or action == "take" and info.listname == "enderchest" + ) then + local def = player:get_wielded_item():get_definition() + + if not minetest.find_node_near(player:get_pos(), def and def.range or ItemStack():get_definition().range, "mcl_chests:ender_chest_small", true) then + return 0 + end + end +end) + minetest.register_craft({ output = "mcl_chests:ender_chest", recipe = { From 92686e5412b593776bcc9c5568c94e0aea23a8eb Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 2 Dec 2021 17:28:19 +0100 Subject: [PATCH 233/271] Fix broken mcl_util.calculate_durability --- mods/CORE/mcl_util/init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index d91c86f09..d548f6cac 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -478,7 +478,9 @@ function mcl_util.calculate_durability(itemstack) end end end - uses = uses or (next(itemstack:get_tool_capabilities().groupcaps) or {}).uses + + local _, groupcap = next(itemstack:get_tool_capabilities().groupcaps) + uses = uses or (groupcap or {}).uses end return uses or 0 From 261faafb7c2d05f1269fb3733912dd82cc815aec Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 7 Dec 2021 15:47:23 +0100 Subject: [PATCH 234/271] Fix get_possible_enchantments to not return incompatible enchantments, even if treasure enchantments are allowed --- mods/ITEMS/mcl_enchanting/engine.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index 02425945c..d02be418d 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -123,7 +123,7 @@ function mcl_enchanting.can_enchant(itemstack, enchantment, level) if itemname == "" then return false, "item missing" end - local supported, primary = mcl_enchanting.item_supports_enchantment(itemstack:get_name(), enchantment) + local supported, primary = mcl_enchanting.item_supports_enchantment(itemname, enchantment) if not supported then return false, "item not supported" end @@ -132,7 +132,7 @@ function mcl_enchanting.can_enchant(itemstack, enchantment, level) end if level > enchantment_def.max_level then return false, "level too high", enchantment_def.max_level - elseif level < 1 then + elseif level < 1 then return false, "level too small", 1 end local item_enchantments = mcl_enchanting.get_enchantments(itemstack) @@ -298,8 +298,8 @@ end function mcl_enchanting.get_possible_enchantments(itemstack, enchantment_level, treasure) local possible_enchantments, weights, accum_weight = {}, {}, 0 for enchantment, enchantment_def in pairs(mcl_enchanting.enchantments) do - local _, _, _, primary = mcl_enchanting.can_enchant(itemstack, enchantment, 1) - if primary or treasure then + local can_enchant, _, _, primary = mcl_enchanting.can_enchant(itemstack, enchantment, 1) + if can_enchant and (primary or treasure) then table.insert(possible_enchantments, enchantment) accum_weight = accum_weight + enchantment_def.weight weights[enchantment] = accum_weight From 882db9f873213ad9e6901b7be62b4b32658f70c4 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 7 Dec 2021 15:49:12 +0100 Subject: [PATCH 235/271] Remove unused and completely unlogical enchantment_level paramenter from get_possible_enchantments --- mods/ITEMS/mcl_enchanting/engine.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index d02be418d..d4953b7da 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -295,7 +295,7 @@ function mcl_enchanting.initialize() end end -function mcl_enchanting.get_possible_enchantments(itemstack, enchantment_level, treasure) +function mcl_enchanting.get_possible_enchantments(itemstack, treasure) local possible_enchantments, weights, accum_weight = {}, {}, 0 for enchantment, enchantment_def in pairs(mcl_enchanting.enchantments) do local can_enchant, _, _, primary = mcl_enchanting.can_enchant(itemstack, enchantment, 1) @@ -327,7 +327,7 @@ function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_leve if enchantment_level == 0 then break end - local possible, weights, accum_weight = mcl_enchanting.get_possible_enchantments(itemstack, enchantment_level, treasure) + local possible, weights, accum_weight = mcl_enchanting.get_possible_enchantments(itemstack, treasure) local selected_enchantment, enchantment_power if #possible > 0 then local r = math.random(accum_weight) From b3958a956d3dfb7751a14670076b8d6b3fd3731e Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 7 Dec 2021 16:16:07 +0100 Subject: [PATCH 236/271] Refactor random enchantment selection code --- mods/ITEMS/mcl_enchanting/engine.lua | 113 +++++++++++++-------------- 1 file changed, 54 insertions(+), 59 deletions(-) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index d4953b7da..b1cb74fb4 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -295,17 +295,22 @@ function mcl_enchanting.initialize() end end -function mcl_enchanting.get_possible_enchantments(itemstack, treasure) - local possible_enchantments, weights, accum_weight = {}, {}, 0 +function mcl_enchanting.get_random_enchantment(itemstack, treasure, weighted, exclude, pr) + local possible = {} + for enchantment, enchantment_def in pairs(mcl_enchanting.enchantments) do local can_enchant, _, _, primary = mcl_enchanting.can_enchant(itemstack, enchantment, 1) - if can_enchant and (primary or treasure) then - table.insert(possible_enchantments, enchantment) - accum_weight = accum_weight + enchantment_def.weight - weights[enchantment] = accum_weight + + if can_enchant and (primary or treasure) and (not exclude or table.indexof(exclude, enchantment) == -1) then + local weight = weighted and enchantment_def.weight or 1 + + for i = 1, weight do + table.insert(possible, enchantment) + end end end - return possible_enchantments, weights, accum_weight + + return #possible > 0 and possible[pr and pr:next(1, #possible) or math.random(#possible)] end function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted) @@ -324,41 +329,42 @@ function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_leve enchantment_level = enchantment_level * 2 repeat enchantment_level = math.floor(enchantment_level / 2) + if enchantment_level == 0 then break end - local possible, weights, accum_weight = mcl_enchanting.get_possible_enchantments(itemstack, treasure) - local selected_enchantment, enchantment_power - if #possible > 0 then - local r = math.random(accum_weight) - for _, enchantment in ipairs(possible) do - if weights[enchantment] >= r then - selected_enchantment = enchantment - break - end - end - local enchantment_def = mcl_enchanting.enchantments[selected_enchantment] - local power_range_table = enchantment_def.power_range_table - for i = enchantment_def.max_level, 1, -1 do - local power_range = power_range_table[i] - if enchantment_level >= power_range[1] and enchantment_level <= power_range[2] then - enchantment_power = i - break - end - end - if not description then - if not enchantment_power then - return - end - description = mcl_enchanting.get_enchantment_description(selected_enchantment, enchantment_power) - end - if enchantment_power then - enchantments[selected_enchantment] = enchantment_power - mcl_enchanting.enchant(itemstack, selected_enchantment, enchantment_power) - end - else + + local selected_enchantment = mcl_enchanting.get_random_enchantment(itemstack, treasure, true) + + if not selected_enchantment then break end + + local enchantment_def = mcl_enchanting.enchantments[selected_enchantment] + local power_range_table = enchantment_def.power_range_table + + local enchantment_power + + for i = enchantment_def.max_level, 1, -1 do + local power_range = power_range_table[i] + if enchantment_level >= power_range[1] and enchantment_level <= power_range[2] then + enchantment_power = i + break + end + end + + if not description then + if not enchantment_power then + return + end + + description = mcl_enchanting.get_enchantment_description(selected_enchantment, enchantment_power) + end + + if enchantment_power then + enchantments[selected_enchantment] = enchantment_power + mcl_enchanting.enchant(itemstack, selected_enchantment, enchantment_power) + end until not no_reduced_bonus_chance and math.random() >= (enchantment_level + 1) / 50 return enchantments, description end @@ -381,32 +387,21 @@ function mcl_enchanting.get_randomly_enchanted_book(enchantment_level, treasure, return mcl_enchanting.enchant_randomly(ItemStack("mcl_books:book"), enchantment_level, treasure, no_reduced_bonus_chance, true) end -function mcl_enchanting.get_uniform_randomly_enchanted_book(except, pr) - except = except or except - local stack = ItemStack("mcl_enchanting:book_enchanted") - local list = {} - for enchantment in pairs(mcl_enchanting.enchantments) do - if table.indexof(except, enchantment) == -1 then - table.insert(list, enchantment) - end +function mcl_enchanting.enchant_uniform_randomly(stack, exclude, pr) + local enchantment = mcl_enchanting.get_random_enchantment(stack, true, weighted, exclude, pr) + + if enchantment then + local max_level = mcl_enchanting.enchantments[enchantment].max_level + mcl_enchanting.enchant(stack, enchantment, pr and pr:next(1, max_level) or math.random(max_level)) end - local index, level - if pr then - index = pr:next(1,#list) - else - index = math.random(#list) - end - local enchantment = list[index] - local enchantment_def = mcl_enchanting.enchantments[enchantment] - if pr then - level = pr:next(1, enchantment_def.max_level) - else - level = math.random(enchantment_def.max_level) - end - mcl_enchanting.enchant(stack, enchantment, level) + return stack end +function mcl_enchanting.get_uniform_randomly_enchanted_book(exclude, pr) + return mcl_enchanting.enchant_uniform_randomly(ItemStack("mcl_books:book"), exclude, pr) +end + function mcl_enchanting.get_random_glyph_row() local glyphs = "" local x = 1.3 From ec7e245b9d165c0ffdd8963909c494f835ccf19a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 7 Dec 2021 17:57:18 +0100 Subject: [PATCH 237/271] Various fixes to the enchanting and loot system - enchanted loot generated by mapgen now uses PseudoRandom for randomness - prevent fishing loot from generating loot 32767 times (!!!) when only 1 is needed - bows and fishing rods obtained from the treasure section of fishing loot are now enchanted - there is now a function to uniform enchant items other than books --- mods/CORE/mcl_loot/init.lua | 23 ++++---- mods/ENTITIES/mobs_mc/villager.lua | 2 +- mods/ITEMS/mcl_enchanting/engine.lua | 57 ++++++++++++-------- mods/ITEMS/mcl_fishing/init.lua | 26 ++++++--- mods/MAPGEN/mcl_dungeons/init.lua | 3 ++ mods/MAPGEN/mcl_structures/init.lua | 4 +- mods/MAPGEN/tsm_railcorridors/gameconfig.lua | 4 +- 7 files changed, 76 insertions(+), 43 deletions(-) diff --git a/mods/CORE/mcl_loot/init.lua b/mods/CORE/mcl_loot/init.lua index 1b2c50807..b90cd4428 100644 --- a/mods/CORE/mcl_loot/init.lua +++ b/mods/CORE/mcl_loot/init.lua @@ -58,26 +58,27 @@ function mcl_loot.get_loot(loot_definitions, pr) end if item then local itemstring = item.itemstring - local itemstack = item.itemstack + if itemstring then + local stack = ItemStack(itemstring) + if item.amount_min and item.amount_max then - itemstring = itemstring .. " " .. pr:next(item.amount_min, item.amount_max) + stack:set_count(pr:next(item.amount_min, item.amount_max)) end + if item.wear_min and item.wear_max then -- Sadly, PseudoRandom only allows very narrow ranges, so we set wear in steps of 10 local wear_min = math.floor(item.wear_min / 10) local wear_max = math.floor(item.wear_max / 10) - local wear = pr:next(wear_min, wear_max) * 10 - if not item.amount_min and not item.amount_max then - itemstring = itemstring .. " 1" - end - - itemstring = itemstring .. " " .. tostring(wear) + stack:set_wear(pr:next(wear_min, wear_max) * 10) end - table.insert(items, itemstring) - elseif itemstack then - table.insert(items, itemstack) + + if item.func then + item.func(stack, pr) + end + + table.insert(items, stack) else minetest.log("error", "[mcl_loot] INTERNAL ERROR! Failed to select random loot item!") end diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index 06cec9ed6..ce2e76575 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -409,7 +409,7 @@ local init_trades = function(self, inv) local offered_stack = ItemStack({name = offered_item, count = offered_count}) if mcl_enchanting.is_enchanted(offered_item) then if mcl_enchanting.is_book(offered_item) then - offered_stack = mcl_enchanting.get_uniform_randomly_enchanted_book({"soul_speed"}) + mcl_enchanting.enchant_uniform_randomly(offered_stack, {"soul_speed"}) else mcl_enchanting.enchant_randomly(offered_stack, math.random(5, 19), false, false, true) mcl_enchanting.unload_enchantments(offered_stack) diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index b1cb74fb4..97a176b97 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -295,6 +295,16 @@ function mcl_enchanting.initialize() end end +function mcl_enchanting.random(pr, ...) + local r = pr and pr:next(...) or math.random(...) + + if pr and not ({...})[1] then + r = r / 32767 + end + + return r +end + function mcl_enchanting.get_random_enchantment(itemstack, treasure, weighted, exclude, pr) local possible = {} @@ -310,23 +320,30 @@ function mcl_enchanting.get_random_enchantment(itemstack, treasure, weighted, ex end end - return #possible > 0 and possible[pr and pr:next(1, #possible) or math.random(#possible)] + return #possible > 0 and possible[mcl_enchanting.random(pr, 1, #possible)] end -function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted) +function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) local itemname = itemstack:get_name() + if not mcl_enchanting.can_enchant_freshly(itemname) and not ignore_already_enchanted then return end + itemstack = ItemStack(itemstack) + local enchantability = minetest.get_item_group(itemname, "enchantability") - enchantability = 1 + math.random(0, math.floor(enchantability / 4)) + math.random(0, math.floor(enchantability / 4)) + enchantability = 1 + mcl_enchanting.random(pr, 0, math.floor(enchantability / 4)) + mcl_enchanting.random(pr, 0, math.floor(enchantability / 4)) + enchantment_level = enchantment_level + enchantability - enchantment_level = enchantment_level + enchantment_level * (math.random() + math.random() - 1) * 0.15 + enchantment_level = enchantment_level + enchantment_level * (mcl_enchanting.random(pr) + mcl_enchanting.random(pr) - 1) * 0.15 enchantment_level = math.max(math.floor(enchantment_level + 0.5), 1) + local enchantments = {} local description + enchantment_level = enchantment_level * 2 + repeat enchantment_level = math.floor(enchantment_level / 2) @@ -334,7 +351,7 @@ function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_leve break end - local selected_enchantment = mcl_enchanting.get_random_enchantment(itemstack, treasure, true) + local selected_enchantment = mcl_enchanting.get_random_enchantment(itemstack, treasure, true, nil, pr) if not selected_enchantment then break @@ -365,43 +382,41 @@ function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_leve enchantments[selected_enchantment] = enchantment_power mcl_enchanting.enchant(itemstack, selected_enchantment, enchantment_power) end - until not no_reduced_bonus_chance and math.random() >= (enchantment_level + 1) / 50 + + until not no_reduced_bonus_chance and mcl_enchanting.random(pr) >= (enchantment_level + 1) / 50 + return enchantments, description end -function mcl_enchanting.generate_random_enchantments_reliable(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted) +function mcl_enchanting.generate_random_enchantments_reliable(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) local enchantments + repeat - enchantments = mcl_enchanting.generate_random_enchantments(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted) + enchantments = mcl_enchanting.generate_random_enchantments(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) until enchantments + return enchantments end -function mcl_enchanting.enchant_randomly(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted) +function mcl_enchanting.enchant_randomly(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) + local enchantments = mcl_enchanting.generate_random_enchantments_reliable(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) + mcl_enchanting.set_enchanted_itemstring(itemstack) - mcl_enchanting.set_enchantments(itemstack, mcl_enchanting.generate_random_enchantments_reliable(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted)) + mcl_enchanting.set_enchantments(itemstack, enchantments) + return itemstack end -function mcl_enchanting.get_randomly_enchanted_book(enchantment_level, treasure, no_reduced_bonus_chance) - return mcl_enchanting.enchant_randomly(ItemStack("mcl_books:book"), enchantment_level, treasure, no_reduced_bonus_chance, true) -end - function mcl_enchanting.enchant_uniform_randomly(stack, exclude, pr) - local enchantment = mcl_enchanting.get_random_enchantment(stack, true, weighted, exclude, pr) + local enchantment = mcl_enchanting.get_random_enchantment(stack, true, false, exclude, pr) if enchantment then - local max_level = mcl_enchanting.enchantments[enchantment].max_level - mcl_enchanting.enchant(stack, enchantment, pr and pr:next(1, max_level) or math.random(max_level)) + mcl_enchanting.enchant(stack, enchantment, mcl_enchanting.random(pr, 1, mcl_enchanting.enchantments[enchantment].max_level)) end return stack end -function mcl_enchanting.get_uniform_randomly_enchanted_book(exclude, pr) - return mcl_enchanting.enchant_uniform_randomly(ItemStack("mcl_books:book"), exclude, pr) -end - function mcl_enchanting.get_random_glyph_row() local glyphs = "" local x = 1.3 diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index ade0be818..788e591dc 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -71,7 +71,9 @@ local fish = function(itemstack, player, pointed_thing) { itemstring = "mcl_fishing:salmon_raw", weight = 25 }, { itemstring = "mcl_fishing:clownfish_raw", weight = 2 }, { itemstring = "mcl_fishing:pufferfish_raw", weight = 13 }, - } + }, + stacks_min = 1, + stacks_max = 1, }, pr) elseif r <= junk_value then -- Junk @@ -88,21 +90,29 @@ local fish = function(itemstack, player, pointed_thing) { itemstring = "mcl_mobitems:bone", weight = 10 }, { itemstring = "mcl_dye:black", weight = 1, amount_min = 10, amount_max = 10 }, { itemstring = "mcl_mobitems:string", weight = 10 }, -- TODO: Tripwire Hook - } + }, + stacks_min = 1, + stacks_max = 1, }, pr) else -- Treasure items = mcl_loot.get_loot({ items = { - -- TODO: Enchanted Bow - { itemstring = "mcl_bows:bow", wear_min = 49144, wear_max = 65535 }, -- 75%-100% damage - { itemstack = mcl_enchanting.get_randomly_enchanted_book(30, true, true)}, - -- TODO: Enchanted Fishing Rod - { itemstring = "mcl_fishing:fishing_rod", wear_min = 49144, wear_max = 65535 }, -- 75%-100% damage + { itemstring = "mcl_bows:bow", wear_min = 49144, wear_max = 65535, func = function(stack, pr) + mcl_enchanting.enchant_randomly(stack, 30, true, false, false, pr) + end }, -- 75%-100% damage + { itemstring = "mcl_books:book", func = function(stack, pr) + mcl_enchanting.enchant_randomly(stack, 30, true, true, false, pr) + end }, + { itemstring = "mcl_fishing:fishing_rod", wear_min = 49144, wear_max = 65535, func = function(stack, pr) + mcl_enchanting.enchant_randomly(stack, 30, true, false, false, pr) + end }, -- 75%-100% damage { itemstring = "mcl_mobs:nametag", }, { itemstring = "mcl_mobitems:saddle", }, { itemstring = "mcl_flowers:waterlily", }, - } + }, + stacks_min = 1, + stacks_max = 1, }, pr) end local item diff --git a/mods/MAPGEN/mcl_dungeons/init.lua b/mods/MAPGEN/mcl_dungeons/init.lua index 58e23b12e..e65294313 100644 --- a/mods/MAPGEN/mcl_dungeons/init.lua +++ b/mods/MAPGEN/mcl_dungeons/init.lua @@ -323,6 +323,9 @@ local function ecb_spawn_dungeon(blockpos, action, calls_remaining, param) { itemstring = "mcl_jukebox:record_4", weight = 15 }, { itemstring = "mobs_mc:iron_horse_armor", weight = 15 }, { itemstring = "mcl_core:apple_gold", weight = 15 }, + { itemstring = "mcl_books:book", weight = 10, func = function(stack, pr) + mcl_enchanting.enchant_uniform_randomly({"soul_speed"}, pr) + end }, { itemstack = mcl_enchanting.get_uniform_randomly_enchanted_book({"soul_speed"}, pr), weight = 10 }, { itemstring = "mobs_mc:gold_horse_armor", weight = 10 }, { itemstring = "mobs_mc:diamond_horse_armor", weight = 5 }, diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index 533c9cab0..7ca7789be 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -454,7 +454,9 @@ local function temple_placement_callback(p1, p2, size, rotation, pr) { itemstring = "mcl_mobitems:bone", weight = 25, amount_min = 4, amount_max=6 }, { itemstring = "mcl_mobitems:rotten_flesh", weight = 25, amount_min = 3, amount_max=7 }, { itemstring = "mcl_mobitems:spider_eye", weight = 25, amount_min = 1, amount_max=3 }, - { itemstack = mcl_enchanting.get_uniform_randomly_enchanted_book({"soul_speed"}, pr), weight = 20, }, + { itemstring = "mcl_books:book", weight = 20, func = function(stack, pr) + mcl_enchanting.enchant_uniform_randomly({"soul_speed"}, pr) + end }, { itemstring = "mcl_mobitems:saddle", weight = 20, }, { itemstring = "mcl_core:apple_gold", weight = 20, }, { itemstring = "mcl_core:gold_ingot", weight = 15, amount_min = 2, amount_max = 7 }, diff --git a/mods/MAPGEN/tsm_railcorridors/gameconfig.lua b/mods/MAPGEN/tsm_railcorridors/gameconfig.lua index 168ecf535..cbe2c9bed 100644 --- a/mods/MAPGEN/tsm_railcorridors/gameconfig.lua +++ b/mods/MAPGEN/tsm_railcorridors/gameconfig.lua @@ -66,7 +66,9 @@ function tsm_railcorridors.get_treasures(pr) items = { { itemstring = "mcl_mobs:nametag", weight = 30 }, { itemstring = "mcl_core:apple_gold", weight = 20 }, - { itemstack = mcl_enchanting.get_uniform_randomly_enchanted_book({"soul_speed"}, pr), weight = 10 }, + { itemstring = "mcl_books:book", weight = 10, func = function(stack, pr) + mcl_enchanting.enchant_uniform_randomly({"soul_speed"}, pr) + end }, { itemstring = "", weight = 5}, { itemstring = "mcl_core:pick_iron", weight = 5 }, { itemstring = "mcl_core:apple_gold_enchanted", weight = 1 }, From 0e9a56fa353ed689bd86dd6a853f5adbb11b0c19 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Tue, 7 Dec 2021 18:19:41 +0100 Subject: [PATCH 238/271] Add stacks to enchant_uniform_randomly --- mods/MAPGEN/mcl_dungeons/init.lua | 124 +++++++++---------- mods/MAPGEN/mcl_structures/init.lua | 2 +- mods/MAPGEN/tsm_railcorridors/gameconfig.lua | 2 +- 3 files changed, 63 insertions(+), 65 deletions(-) diff --git a/mods/MAPGEN/mcl_dungeons/init.lua b/mods/MAPGEN/mcl_dungeons/init.lua index e65294313..905e26396 100644 --- a/mods/MAPGEN/mcl_dungeons/init.lua +++ b/mods/MAPGEN/mcl_dungeons/init.lua @@ -63,6 +63,67 @@ local surround_vectors = { { x=0, y=0, z=1 }, } +local loottable = +{ + { + stacks_min = 1, + stacks_max = 3, + items = { + { itemstring = "mcl_mobs:nametag", weight = 20 }, + { itemstring = "mcl_mobitems:saddle", weight = 20 }, + { itemstring = "mcl_jukebox:record_1", weight = 15 }, + { itemstring = "mcl_jukebox:record_4", weight = 15 }, + { itemstring = "mobs_mc:iron_horse_armor", weight = 15 }, + { itemstring = "mcl_core:apple_gold", weight = 15 }, + { itemstring = "mcl_books:book", weight = 10, func = function(stack, pr) + mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) + end }, + { itemstring = "mobs_mc:gold_horse_armor", weight = 10 }, + { itemstring = "mobs_mc:diamond_horse_armor", weight = 5 }, + { itemstring = "mcl_core:apple_gold_enchanted", weight = 2 }, + } + }, + { + stacks_min = 1, + stacks_max = 4, + items = { + { itemstring = "mcl_farming:wheat_item", weight = 20, amount_min = 1, amount_max = 4 }, + { itemstring = "mcl_farming:bread", weight = 20 }, + { itemstring = "mcl_core:coal_lump", weight = 15, amount_min = 1, amount_max = 4 }, + { itemstring = "mesecons:redstone", weight = 15, amount_min = 1, amount_max = 4 }, + { itemstring = "mcl_farming:beetroot_seeds", weight = 10, amount_min = 2, amount_max = 4 }, + { itemstring = "mcl_farming:melon_seeds", weight = 10, amount_min = 2, amount_max = 4 }, + { itemstring = "mcl_farming:pumpkin_seeds", weight = 10, amount_min = 2, amount_max = 4 }, + { itemstring = "mcl_core:iron_ingot", weight = 10, amount_min = 1, amount_max = 4 }, + { itemstring = "mcl_buckets:bucket_empty", weight = 10 }, + { itemstring = "mcl_core:gold_ingot", weight = 5, amount_min = 1, amount_max = 4 }, + }, + }, + { + stacks_min = 3, + stacks_max = 3, + items = { + { itemstring = "mcl_mobitems:bone", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:gunpowder", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:rotten_flesh", weight = 10, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_mobitems:string", weight = 10, amount_min = 1, amount_max = 8 }, + }, + } +} + +-- Bonus loot for v6 mapgen: Otherwise unobtainable saplings. +if mg_name == "v6" then + table.insert(loottable, { + stacks_min = 1, + stacks_max = 3, + items = { + { itemstring = "mcl_core:birchsapling", weight = 1, amount_min = 1, amount_max = 2 }, + { itemstring = "mcl_core:acaciasapling", weight = 1, amount_min = 1, amount_max = 2 }, + { itemstring = "", weight = 6 }, + }, + }) +end + local function ecb_spawn_dungeon(blockpos, action, calls_remaining, param) if calls_remaining >= 1 then return end @@ -310,69 +371,6 @@ local function ecb_spawn_dungeon(blockpos, action, calls_remaining, param) set_node(pos, {name="mcl_chests:chest", param2=facedir}) local meta = get_meta(pos) - - local loottable = - { - { - stacks_min = 1, - stacks_max = 3, - items = { - { itemstring = "mcl_mobs:nametag", weight = 20 }, - { itemstring = "mcl_mobitems:saddle", weight = 20 }, - { itemstring = "mcl_jukebox:record_1", weight = 15 }, - { itemstring = "mcl_jukebox:record_4", weight = 15 }, - { itemstring = "mobs_mc:iron_horse_armor", weight = 15 }, - { itemstring = "mcl_core:apple_gold", weight = 15 }, - { itemstring = "mcl_books:book", weight = 10, func = function(stack, pr) - mcl_enchanting.enchant_uniform_randomly({"soul_speed"}, pr) - end }, - { itemstack = mcl_enchanting.get_uniform_randomly_enchanted_book({"soul_speed"}, pr), weight = 10 }, - { itemstring = "mobs_mc:gold_horse_armor", weight = 10 }, - { itemstring = "mobs_mc:diamond_horse_armor", weight = 5 }, - { itemstring = "mcl_core:apple_gold_enchanted", weight = 2 }, - } - }, - { - stacks_min = 1, - stacks_max = 4, - items = { - { itemstring = "mcl_farming:wheat_item", weight = 20, amount_min = 1, amount_max = 4 }, - { itemstring = "mcl_farming:bread", weight = 20 }, - { itemstring = "mcl_core:coal_lump", weight = 15, amount_min = 1, amount_max = 4 }, - { itemstring = "mesecons:redstone", weight = 15, amount_min = 1, amount_max = 4 }, - { itemstring = "mcl_farming:beetroot_seeds", weight = 10, amount_min = 2, amount_max = 4 }, - { itemstring = "mcl_farming:melon_seeds", weight = 10, amount_min = 2, amount_max = 4 }, - { itemstring = "mcl_farming:pumpkin_seeds", weight = 10, amount_min = 2, amount_max = 4 }, - { itemstring = "mcl_core:iron_ingot", weight = 10, amount_min = 1, amount_max = 4 }, - { itemstring = "mcl_buckets:bucket_empty", weight = 10 }, - { itemstring = "mcl_core:gold_ingot", weight = 5, amount_min = 1, amount_max = 4 }, - }, - }, - { - stacks_min = 3, - stacks_max = 3, - items = { - { itemstring = "mcl_mobitems:bone", weight = 10, amount_min = 1, amount_max = 8 }, - { itemstring = "mcl_mobitems:gunpowder", weight = 10, amount_min = 1, amount_max = 8 }, - { itemstring = "mcl_mobitems:rotten_flesh", weight = 10, amount_min = 1, amount_max = 8 }, - { itemstring = "mcl_mobitems:string", weight = 10, amount_min = 1, amount_max = 8 }, - }, - } - } - - -- Bonus loot for v6 mapgen: Otherwise unobtainable saplings. - if mg_name == "v6" then - table_insert(loottable, { - stacks_min = 1, - stacks_max = 3, - items = { - { itemstring = "mcl_core:birchsapling", weight = 1, amount_min = 1, amount_max = 2 }, - { itemstring = "mcl_core:acaciasapling", weight = 1, amount_min = 1, amount_max = 2 }, - { itemstring = "", weight = 6 }, - }, - }) - end - minetest.log("action", "[mcl_dungeons] Filling chest " .. tostring(c) .. " at " .. minetest.pos_to_string(pos)) mcl_loot.fill_inventory(meta:get_inventory(), "main", mcl_loot.get_multi_loot(loottable, pr), pr) end diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index 7ca7789be..be1be0f67 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -455,7 +455,7 @@ local function temple_placement_callback(p1, p2, size, rotation, pr) { itemstring = "mcl_mobitems:rotten_flesh", weight = 25, amount_min = 3, amount_max=7 }, { itemstring = "mcl_mobitems:spider_eye", weight = 25, amount_min = 1, amount_max=3 }, { itemstring = "mcl_books:book", weight = 20, func = function(stack, pr) - mcl_enchanting.enchant_uniform_randomly({"soul_speed"}, pr) + mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, { itemstring = "mcl_mobitems:saddle", weight = 20, }, { itemstring = "mcl_core:apple_gold", weight = 20, }, diff --git a/mods/MAPGEN/tsm_railcorridors/gameconfig.lua b/mods/MAPGEN/tsm_railcorridors/gameconfig.lua index cbe2c9bed..de4b18119 100644 --- a/mods/MAPGEN/tsm_railcorridors/gameconfig.lua +++ b/mods/MAPGEN/tsm_railcorridors/gameconfig.lua @@ -67,7 +67,7 @@ function tsm_railcorridors.get_treasures(pr) { itemstring = "mcl_mobs:nametag", weight = 30 }, { itemstring = "mcl_core:apple_gold", weight = 20 }, { itemstring = "mcl_books:book", weight = 10, func = function(stack, pr) - mcl_enchanting.enchant_uniform_randomly({"soul_speed"}, pr) + mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr) end }, { itemstring = "", weight = 5}, { itemstring = "mcl_core:pick_iron", weight = 5 }, From 654f6089093c3fbcbb3b25ec1248d438a8f1ca13 Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 8 Dec 2021 18:59:00 +0400 Subject: [PATCH 239/271] #41 Remove proprietary textures, update game screenshot --- .../textures/crimson_hyphae_old.png | Bin 318 -> 0 bytes .../textures/crimson_hyphae_side_old.png | Bin 318 -> 0 bytes .../textures/crimson_nylium_old.png | Bin 565 -> 0 bytes .../textures/crimson_nylium_side_old.png | Bin 218 -> 0 bytes .../mcl_mushroom/textures/shroomlight_old.png | Bin 385 -> 0 bytes .../textures/warped_hyphae_old.png | Bin 301 -> 0 bytes .../textures/warped_hyphae_side_old.png | Bin 322 -> 0 bytes .../textures/warped_nylium_side_old.png | Bin 223 -> 0 bytes .../textures/warped_wart_block_old.png | Bin 261 -> 0 bytes screenshot.png | Bin 88675 -> 96071 bytes 10 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mods/ITEMS/mcl_mushroom/textures/crimson_hyphae_old.png delete mode 100644 mods/ITEMS/mcl_mushroom/textures/crimson_hyphae_side_old.png delete mode 100644 mods/ITEMS/mcl_mushroom/textures/crimson_nylium_old.png delete mode 100644 mods/ITEMS/mcl_mushroom/textures/crimson_nylium_side_old.png delete mode 100644 mods/ITEMS/mcl_mushroom/textures/shroomlight_old.png delete mode 100644 mods/ITEMS/mcl_mushroom/textures/warped_hyphae_old.png delete mode 100644 mods/ITEMS/mcl_mushroom/textures/warped_hyphae_side_old.png delete mode 100644 mods/ITEMS/mcl_mushroom/textures/warped_nylium_side_old.png delete mode 100644 mods/ITEMS/mcl_mushroom/textures/warped_wart_block_old.png diff --git a/mods/ITEMS/mcl_mushroom/textures/crimson_hyphae_old.png b/mods/ITEMS/mcl_mushroom/textures/crimson_hyphae_old.png deleted file mode 100644 index 583aa964786f49db13477b203bf9bce57fdaf388..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmV-E0m1%>P)Aj-Q8*kTm)R3=f!re}>?d9g)tOzD3Us=^`HA#W(M!e55sxZ{ zHVkd}h+yW3J0;8<(M!e9hF&UG2>VRf;7(}^y@46e9QR!>6*6lCpXlOkjoaHztOOmjriS&#Ws*P&fGnX$M2;=c+>0yuH7g5 zl7+E--F^bS)EDUP)Aj-Q8*kTm)R3=f!re}>?d9g)tOzD3Us=^`HA#W(M!e55sxZ{ zHVkd}h+yW3J0;8<(M!e9hF&UG2>VRf;7(}^y@46e9QR!>6*6lCpXlOkjoaHztOOmjriS&#Ws*P&fGnX$M2;=c+>0yuH7g5 zl7+E--F^bS)EDUVl&|0005}NklvZ_zECO)P@L6&|0Me#Binvcq5)7;eM;HM!&0|A%$gHj{ zyi+<247Va`9TkcV_oV{$rKxIs*8{FGY70v1?jzto=%tp`n65AUA#U>_ZkMh~J2dPS zY#$9uqgv9vpy~m);nrioipwui>-U9S|F3*Zgn<75Vu#pVTts8x00000NkvXXu0mjf DY6u5} diff --git a/mods/ITEMS/mcl_mushroom/textures/crimson_nylium_side_old.png b/mods/ITEMS/mcl_mushroom/textures/crimson_nylium_side_old.png deleted file mode 100644 index 36984d69effd04929b03929dacff2bee93ca5247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`3q4&NLo9mlPB_SWM1hCpxuc*> ztkWev)eB6y0c^TU%OOAm zK5p$gZ0tI0%-7Gu+Mb7XUC*c8pYXfmUFOUFE06QP6ujeB=>#0$3YAnMuGmEovfI(@ zcKjJG=j(pK#|%NHk`NLm?!Gy>7kA#mw%YRVWt+PsX?2*}GQ08yh-LyN+vTt5VOAlg@t fQgu$9PbcsJ3%4c0<~RIw00000NkvXXu0mjfZ-1gU diff --git a/mods/ITEMS/mcl_mushroom/textures/warped_hyphae_old.png b/mods/ITEMS/mcl_mushroom/textures/warped_hyphae_old.png deleted file mode 100644 index 6a8be80a7f083457b5af7eecb55edbab4b46e62c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmV+|0n+}7P)DGU`73sD$4v1NjxjEt>65Y~}28?8GXKCM#i; z#_REfywfM|(zZ$?X|fXaGVfr#3um>hFx~~9M3a?BtkS5L8EM}k?K>1hi(+VzPh&VG z7_YYVQ-LI?wiVU3URFdDLyLNuzXZm+;AFX1sFxY}G{Shd??FC|fk4WTWs`t*=m8%w zOWJo)W*I+~aIAnnmdi7ea7RG%5$jP5Xvv-;M+=WUTY@6Iq>9!^<`HqX+A}`~c`^Axt&^+*k-5)s^*g z-9kQkK(RWqFBYPgTgY$}Gn$P^5aDb(!A>2SM#T!!Jrg_DtiwUNO=II1pWyiR+F`BT zI#Sr=XZtG&iP#(w-p6>+b>RH6EvzX_tj Uq#%9e2=sEDw;&r7j?;Hx(o~c z*ygqDU<;_83N3907naVm86?c1wxKYhCzHp_1@I0EcVUl=-)u6%M{#_|vNTr(Pk&E7 zjsaYFK^~ib@+~{?DB5M(JuNbxZr=L`;yZQ#K52Ah1sD+HUiYIP>*5CaTA;H100000 LNkvXXu0mjfkiKou diff --git a/screenshot.png b/screenshot.png index a92bd53e5e767697add40e8bdf0befcce6ceb620..12cc5db22bd96da3e3ebfc665dcfb363e170a9f2 100644 GIT binary patch literal 96071 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

bN4B$|z0wGct`6S69S0GG?iWs5@KrOWw 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 From c0e4065e33b87856a2375add36349214622b4db0 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Wed, 8 Dec 2021 18:04:43 +0000 Subject: [PATCH 240/271] =?UTF-8?q?=E2=80=9Emods/ITEMS/REDSTONE/mesecons?= =?UTF-8?q?=5Fsolarpanel/init.lua=E2=80=9C=20=C3=A4ndern?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua index ed0e4c608..1c89293cc 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua @@ -96,8 +96,9 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) + local time = minetest.get_us_time() - if light >= 12 and minetest.get_timeofday() > 0.2 and minetest.get_timeofday() < 0.8 then + if light >= 14 and time > 6000 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_on", param2=node.param2}) mesecon.receptor_on(pos, mesecon.rules.pplate) end @@ -111,8 +112,9 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) + local time = minetest.get_us_time() - if light < 12 then + if light < 14 and time > 18000 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_off", param2=node.param2}) mesecon.receptor_off(pos, mesecon.rules.pplate) end @@ -203,8 +205,9 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) + local time = minetest.get_us_time() - if light < 12 then + if light < 14 and time > 18000 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_inverted_on", param2=node.param2}) mesecon.receptor_on(pos, mesecon.rules.pplate) end @@ -218,8 +221,9 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) + local time = minetest.get_us_time() - if light >= 12 and minetest.get_timeofday() > 0.8 and minetest.get_timeofday() < 0.2 then + if light >= 14 and time > 6000 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_inverted_off", param2=node.param2}) mesecon.receptor_off(pos, mesecon.rules.pplate) end From 5ea16cd4f0962fe3e76f3be11dfc033ec24b4c40 Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 9 Dec 2021 02:55:57 +0400 Subject: [PATCH 241/271] Disable Nether portal node rotation by screwdriver --- mods/ITEMS/mcl_portals/portal_nether.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index 1b673a7c2..838c1be95 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -242,6 +242,11 @@ local function destroy_nether_portal(pos, node) check_remove({x = pos.x, y = pos.y + 1, z = pos.z}) end +local on_rotate +if minetest.get_modpath("screwdriver") then + on_rotate = screwdriver.disallow +end + minetest.register_node(PORTAL, { description = S("Nether Portal"), _doc_items_longdesc = S("A Nether portal teleports creatures and objects to the hot and dangerous Nether dimension (and back!). Enter at your own risk!"), @@ -291,6 +296,7 @@ minetest.register_node(PORTAL, { groups = { creative_breakable = 1, portal = 1, not_in_creative_inventory = 1 }, sounds = mcl_sounds.node_sound_glass_defaults(), after_destruct = destroy_nether_portal, + on_rotate = on_rotate, _mcl_hardness = -1, _mcl_blast_resistance = 0, From b945975427e3bd0c7436efea4d8d2835cc98bd4e Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 9 Dec 2021 18:11:05 +0100 Subject: [PATCH 242/271] Slime splitting: nil check child to prevent crash (that happened on oysterity-mcl2) --- mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 48aacfcce..9236b255e 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -31,12 +31,14 @@ local spawn_children_on_die = function(child_mob, children_count, spawn_distance speed_penalty = 0.5 end local mob = minetest.add_entity(newpos, child_mob) - if (not mother_stuck) then - mob:set_velocity(vector.multiply(dir, eject_speed * speed_penalty)) + if mob then + if (not mother_stuck) then + mob:set_velocity(vector.multiply(dir, eject_speed * speed_penalty)) + end + mob:set_yaw(angle - math.pi/2) + table.insert(children, mob) + angle = angle + (math.pi*2)/children_count end - mob:set_yaw(angle - math.pi/2) - table.insert(children, mob) - angle = angle + (math.pi*2)/children_count end -- If mother was murdered, children attack the killer after 1 second if self.state == "attack" then From e4feb233e077ee4878c4bf85a88d24bc709c20b2 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Thu, 9 Dec 2021 18:20:24 +0100 Subject: [PATCH 243/271] Fix hopper dupe --- mods/ITEMS/mcl_hoppers/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index f9ba1a8c8..36a21ad95 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -350,7 +350,7 @@ minetest.register_abm({ local inv = meta:get_inventory() for _,object in pairs(minetest.get_objects_inside_radius(pos, 2)) do - if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then + if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" and not object:get_luaentity()._removed then if inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then -- Item must get sucked in when the item just TOUCHES the block above the hopper -- This is the reason for the Y calculation. From 5d73d69a82fadc543fffacff75007bfec5a66d8c Mon Sep 17 00:00:00 2001 From: kay27 Date: Fri, 10 Dec 2021 03:46:24 +0400 Subject: [PATCH 244/271] #48 Fix lightning crash --- mods/ENVIRONMENT/lightning/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 1ed3453ab..55ada0d53 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -213,11 +213,11 @@ lightning.register_on_strike(function(pos, pos2, objects) for i=1,3 do posadd = { x=math.cos(angle),y=0,z=math.sin(angle) } posadd = vector.normalize(posadd) - local mob = add_entity(vector.add(pos2, posadd), "mobs_mc:skeleton") + local mob = minetest.add_entity(vector.add(pos2, posadd), "mobs_mc:skeleton") if mob then mob:set_yaw(angle-math.pi/2) + angle = angle + (math.pi*2) / 3 end - angle = angle + (math.pi*2) / 3 end -- Cause a fire From 0c8e5dc7a40985bb887c33bee955742cafa68e3e Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 9 Dec 2021 02:55:57 +0400 Subject: [PATCH 245/271] Disable Nether portal node rotation by screwdriver --- mods/ITEMS/mcl_portals/portal_nether.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index 3f15a134d..46025619c 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -237,6 +237,11 @@ local function destroy_nether_portal(pos, node) check_remove({x = pos.x, y = pos.y + 1, z = pos.z}) end +local on_rotate +if minetest.get_modpath("screwdriver") then + on_rotate = screwdriver.disallow +end + minetest.register_node(PORTAL, { description = S("Nether Portal"), _doc_items_longdesc = S("A Nether portal teleports creatures and objects to the hot and dangerous Nether dimension (and back!). Enter at your own risk!"), @@ -286,6 +291,7 @@ minetest.register_node(PORTAL, { groups = { creative_breakable = 1, portal = 1, not_in_creative_inventory = 1 }, sounds = mcl_sounds.node_sound_glass_defaults(), after_destruct = destroy_nether_portal, + on_rotate = on_rotate, _mcl_hardness = -1, _mcl_blast_resistance = 0, From d9cec19d6259ffd326626199657a388b6c61cb61 Mon Sep 17 00:00:00 2001 From: kay27 Date: Fri, 10 Dec 2021 03:55:45 +0400 Subject: [PATCH 246/271] #48 Localize add_entity --- mods/ENVIRONMENT/lightning/init.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 55ada0d53..3579316e8 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -19,6 +19,7 @@ local set_node = minetest.set_node local sound_play = minetest.sound_play local add_particlespawner = minetest.add_particlespawner local after = minetest.after +local add_entity = minetest.add_entity local get_objects_inside_radius = minetest.get_objects_inside_radius local get_item_group = minetest.get_item_group @@ -206,18 +207,18 @@ lightning.register_on_strike(function(pos, pos2, objects) if get_node(pos2).name == "air" then -- Low chance for a lightning to spawn skeleton horse + skeletons if skeleton_lightning then - minetest.add_entity(pos2, "mobs_mc:skeleton_horse") + add_entity(pos2, "mobs_mc:skeleton_horse") local angle, posadd angle = math.random(0, math.pi*2) for i=1,3 do posadd = { x=math.cos(angle),y=0,z=math.sin(angle) } posadd = vector.normalize(posadd) - local mob = minetest.add_entity(vector.add(pos2, posadd), "mobs_mc:skeleton") + local mob = add_entity(vector.add(pos2, posadd), "mobs_mc:skeleton") if mob then mob:set_yaw(angle-math.pi/2) - angle = angle + (math.pi*2) / 3 end + angle = angle + (math.pi*2) / 3 end -- Cause a fire From 5a4abcbcb7d7aef5d61dbc54c9a783cd9b494ce7 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Fri, 10 Dec 2021 13:59:31 +0000 Subject: [PATCH 247/271] fixed daylightsensor's register_abms By changing the check if a normal/inverted daylightsensor should update by turning on and off, I made them workling again --- mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua index ed0e4c608..1c89293cc 100644 --- a/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_solarpanel/init.lua @@ -96,8 +96,9 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) + local time = minetest.get_us_time() - if light >= 12 and minetest.get_timeofday() > 0.2 and minetest.get_timeofday() < 0.8 then + if light >= 14 and time > 6000 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_on", param2=node.param2}) mesecon.receptor_on(pos, mesecon.rules.pplate) end @@ -111,8 +112,9 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) + local time = minetest.get_us_time() - if light < 12 then + if light < 14 and time > 18000 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_off", param2=node.param2}) mesecon.receptor_off(pos, mesecon.rules.pplate) end @@ -203,8 +205,9 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) + local time = minetest.get_us_time() - if light < 12 then + if light < 14 and time > 18000 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_inverted_on", param2=node.param2}) mesecon.receptor_on(pos, mesecon.rules.pplate) end @@ -218,8 +221,9 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local light = minetest.get_node_light(pos, nil) + local time = minetest.get_us_time() - if light >= 12 and minetest.get_timeofday() > 0.8 and minetest.get_timeofday() < 0.2 then + if light >= 14 and time > 6000 then minetest.set_node(pos, {name="mesecons_solarpanel:solar_panel_inverted_off", param2=node.param2}) mesecon.receptor_off(pos, mesecon.rules.pplate) end From 512042d8d650296b15b5f8e259c21bff63fd063c Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 11 Dec 2021 03:13:45 +0400 Subject: [PATCH 248/271] Update mcl_bubble_column mod by j45 --- mods/CORE/mcl_bubble_column/README.md | 12 +- mods/CORE/mcl_bubble_column/init.lua | 532 +++++++++----------------- 2 files changed, 188 insertions(+), 356 deletions(-) diff --git a/mods/CORE/mcl_bubble_column/README.md b/mods/CORE/mcl_bubble_column/README.md index efeb52d6c..f56d30145 100644 --- a/mods/CORE/mcl_bubble_column/README.md +++ b/mods/CORE/mcl_bubble_column/README.md @@ -1,3 +1,9 @@ -# mcl_bubble_column -bubble_column mod for mineclone2 -put in /mtdir/games/mineclone2/mods/CORE/ +# mcl_bubble_column by j45 + +https://github.com/Minetest-j45/mcl_bubble_column/ + +Adds whirlpools and upwards bubble columns to Mineclone2/5 + +A bubble column is a block generated by placing magma blocks or soul sand in water (source). + +Bubble columns push or pull entities and items in certain directions. diff --git a/mods/CORE/mcl_bubble_column/init.lua b/mods/CORE/mcl_bubble_column/init.lua index 756e365e2..ed3bcc5b3 100644 --- a/mods/CORE/mcl_bubble_column/init.lua +++ b/mods/CORE/mcl_bubble_column/init.lua @@ -1,369 +1,195 @@ -local S = minetest.get_translator("mcl_bubble_column") +mcl_bubble_column = {} -local WATER_ALPHA = 179 -local WATER_VISC = 1 -local LAVA_VISC = 7 -local LIGHT_LAVA = minetest.LIGHT_MAX -local USE_TEXTURE_ALPHA -if minetest.features.use_texture_alpha_string_modes then - USE_TEXTURE_ALPHA = "blend" - WATER_ALPHA = nil +minetest.register_abm{ + label = "bubbleColumnUpStop", + nodenames = {"group:water"}, + interval = 0.05, + chance = 1, + action = function(pos) + local meta = minetest.get_meta(pos) + if meta:get_int("bubbly") == 1 then--bubble column + --check down if current needs to be deleted + local downpos = vector.add(pos, {x = 0, y = -1, z = 0}) + local downposnode = minetest.get_node(downpos) + local downmeta = minetest.get_meta(downpos) + if (downmeta:get_int("bubbly") ~= 1 and downposnode.name ~= "mcl_nether:soul_sand") then + meta:set_int("bubbly", 0) + end + --check up to see if needs to go up + local uppos = vector.add(pos, {x = 0, y = 1, z = 0}) + local upposnode = minetest.get_node(uppos) + local upmeta = minetest.get_meta(uppos) + if (minetest.get_item_group(upposnode.name, "water") == 3 and upmeta:get_int("bubbly") ~= 1) then + upmeta:set_int("bubbly", 1) + end + elseif meta:get_int("whirly") == 1 then--whirlpool + --check down if current needs to be deleted + local downpos = vector.add(pos, {x = 0, y = -1, z = 0}) + local downposnode = minetest.get_node(downpos) + local downmeta = minetest.get_meta(downpos) + if (downmeta:get_int("whirly") ~= 1 and downposnode.name ~= "mcl_nether:magma") then + meta:set_int("whirly", 0) + end + --check up to see if needs to go up + local uppos = vector.add(pos, {x = 0, y = 1, z = 0}) + local upposnode = minetest.get_node(uppos) + local upmeta = minetest.get_meta(uppos) + if (minetest.get_item_group(upposnode.name, "water") == 3 and upmeta:get_int("whirly") ~= 1) then + upmeta:set_int("whirly", 1) + end + end + end, +} + +minetest.register_abm{ + label = "startBubbleColumn", + nodenames = {"mcl_nether:soul_sand"}, + interval = 0.05, + chance = 1, + action = function(pos) + local uppos = vector.add(pos, {x = 0, y = 1, z = 0}) + local upposnode = minetest.get_node(uppos) + local upmeta = minetest.get_meta(uppos) + if (minetest.get_item_group(upposnode.name, "water") == 3 and upmeta:get_int("bubbly") ~= 1) then + upmeta:set_int("bubbly", 1) + end + end, +} + +minetest.register_abm{ + label = "startWhirlpool", + nodenames = {"mcl_nether:magma"}, + interval = 0.05, + chance = 1, + action = function(pos) + local uppos = vector.add(pos, {x = 0, y = 1, z = 0}) + local upposnode = minetest.get_node(uppos) + local upmeta = minetest.get_meta(uppos) + if (minetest.get_item_group(upposnode.name, "water") == 3 and upmeta:get_int("whirly") ~= 1) then + upmeta:set_int("whirly", 1) + end + end, +} + + +mcl_bubble_column.on_enter_bubble_column = function(self) + local velocity = self:get_velocity() + --[[if down.name == "mcl_nether:soul_sand" then + self:add_velocity({x = 0, y = math.min(10, math.abs(velocity.y)+9.4), z = 0}) + else]] + self:add_velocity({x = 0, y = math.min(3.6, math.abs(velocity.y)+3), z = 0}) + --end end -minetest.register_node("mcl_bubble_column:water_flowing_up", { - description = S("Bubble Column Flowing Water (up)"), - _doc_items_create_entry = false, - wield_image = "default_water_flowing_animated.png^[verticalframe:64:0", - drawtype = "flowingliquid", - tiles = {"default_water_flowing_animated.png^[verticalframe:64:0"}, - special_tiles = { - { - image="default_water_flowing_animated.png", - backface_culling=false, - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} - }, - { - image="default_water_flowing_animated.png", - backface_culling=false, - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} - }, - }, - sounds = mcl_sounds.node_sound_water_defaults(), - is_ground_content = false, - alpha = WATER_ALPHA, - use_texture_alpha = USE_TEXTURE_ALPHA, - paramtype = "light", - paramtype2 = "flowingliquid", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - drop = "", - drowning = 4, - liquidtype = "flowing", - liquid_alternative_flowing = "mcl_bubble_column:water_flowing_up", - liquid_alternative_source = "mcl_bubble_column:water_source_up", - liquid_viscosity = WATER_VISC, - liquid_range = 7, - post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, - groups = { water=3, liquid=3, puts_out_fire=1, not_in_creative_inventory=1, freezes=1, melt_around=1, dig_by_piston=1}, - _mcl_blast_resistance = 100, - -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode - _mcl_hardness = -1, -}) +mcl_bubble_column.on_enter_whirlpool = function(self) + local velocity = self:get_velocity() + --self:add_velocity({x = 0, y = math.max(-3, (-math.abs(velocity.y))-2), z = 0}) + self:add_velocity({x = 0, y = math.max(-0.3, (-math.abs(velocity.y))-0.03), z = 0}) +end -minetest.register_node("mcl_bubble_column:water_source_up", { - description = S("Bubble Column Water Source"), - _doc_items_entry_name = S("Water"), - _doc_items_longdesc = S("Boosts you up"), - _doc_items_hidden = false, - drawtype = "liquid", - tiles = { - {name="default_water_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}} - }, - special_tiles = { - -- New-style water source material (mostly unused) - { - name="default_water_source_animated.png", - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}, - backface_culling = false, - } - }, - sounds = mcl_sounds.node_sound_water_defaults(), - is_ground_content = false, - alpha = WATER_ALPHA, - use_texture_alpha = USE_TEXTURE_ALPHA, - paramtype = "light", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - drop = "", - drowning = 4, - liquidtype = "source", - liquid_alternative_flowing = "mcl_bubble_column:water_flowing_up", - liquid_alternative_source = "mcl_bubble_column:water_source_up", - liquid_viscosity = WATER_VISC, - liquid_range = 7, - post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, - stack_max = 64, - groups = { water=3, liquid=3, puts_out_fire=1, not_in_creative_inventory=1, dig_by_piston=1}, - _mcl_blast_resistance = 100, - -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode - _mcl_hardness = -1, -}) +mcl_bubble_column.on_enter_bubble_column_with_air_above = function(self) + local velocity = self:get_velocity() + --[[if down.name == "mcl_nether:soul_sand" then + self:add_velocity({x = 0, y = math.min(4.3, math.abs(velocity.y)+2.8), z = 0}) + else]] + self:add_velocity({x = 0, y = math.min(2.6, math.abs(velocity.y)+2), z = 0}) + --end +end + +mcl_bubble_column.on_enter_whirlpool_with_air_above = function(self) + local velocity = self:get_velocity() + --self:add_velocity({x = 0, y = math.max(-3.5, (-math.abs(velocity.y))-2), z = 0}) + self:add_velocity({x = 0, y = math.max(-0.9, (-math.abs(velocity.y))-0.03), z = 0}) +end + +minetest.register_abm{ + label = "entGo", + nodenames = {"group:water"}, + interval = 0.05, + chance = 1, + action = function(pos) + --if not bubble column block return + local meta = minetest.get_meta(pos) + if meta:get_int("bubbly") == 1 then + local up = minetest.get_node(vector.add(pos, {x = 0, y = 1, z = 0})) + for _,entity in pairs(minetest.get_objects_inside_radius(pos, 0.75)) do + if up.name == "air" then + mcl_bubble_column.on_enter_bubble_column_with_air_above(entity) + else + mcl_bubble_column.on_enter_bubble_column(entity) + end + end + elseif meta:get_int("whirly") == 1 then + local up = minetest.get_node(vector.add(pos, {x = 0, y = 1, z = 0})) + for _,entity in pairs(minetest.get_objects_inside_radius(pos, 0.75)) do + if up.name == "air" then + mcl_bubble_column.on_enter_whirlpool_with_air_above(entity) + else + mcl_bubble_column.on_enter_whirlpool(entity) + end + end + end + end, +} minetest.register_globalstep(function() for _,player in ipairs(minetest.get_connected_players()) do - local name = player:get_player_name() - local pos = player:get_pos() - local node = minetest.get_node(pos) - if node.name == "mcl_bubble_column:water_source_up" then - local velocity = player:get_player_velocity() - local velocityadd = {x = 0, y = 3, z = 0} - player:add_player_velocity(velocityadd) - end - end + local ppos = player:get_pos() + local eyepos = {x = ppos.x, y = ppos.y + player:get_properties().eye_height, z = ppos.z} + local node = minetest.get_node(ppos) + local eyenode = minetest.get_node(eyepos) + local meta = minetest.get_meta(ppos) + local eyemeta = minetest.get_meta(eyepos) + + local eyemeta = minetest.get_meta(ppos) + --if minetest.get_item_group(node.name, "water") == 3 and minetest.get_item_group(eyenode.name, "water") == 3 then return end + if meta:get_int("bubbly") == 1 or eyemeta:get_int("bubbly") == 1 then + local up = minetest.get_node(vector.add(eyepos, {x = 0, y = 1, z = 0})) + if up.name == "air" then + mcl_bubble_column.on_enter_bubble_column_with_air_above(player) + else + mcl_bubble_column.on_enter_bubble_column(player) + end + elseif meta:get_int("whirly") == 1 or eyemeta:get_int("whirly") == 1 then + local up = minetest.get_node(vector.add(ppos, {x = 0, y = 1, z = 0})) + if up.name == "air" then + mcl_bubble_column.on_enter_whirlpool_with_air_above(player) + else + mcl_bubble_column.on_enter_whirlpool(player) + end + end + end end) +--abms to remove and replace old bubble columns/whirlpools minetest.register_abm{ - label = "entities go up", + label = "removeOldFlowingColumns", + nodenames = {"mcl_bubble_column:water_flowing_up", "mcl_bubble_column:water_flowing_down"}, + interval = 1,--reduce lag + chance = 1, + action = function(pos) + minetest.set_node(pos, {name = "air"}) + end, +} +minetest.register_abm{ + label = "replaceBubbleColumns", nodenames = {"mcl_bubble_column:water_source_up"}, - interval = 0.05, + interval = 1,--reduce lag chance = 1, action = function(pos) - for _,entity in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do - local pos = entity:get_pos() - local velocity = entity:get_velocity() - local velocityadd = {x = 0, y = 2, z = 0} - entity:add_velocity(velocityadd) - end - end, -} - -minetest.register_abm{ - label = "bubbles go up", - nodenames = {"mcl_bubble_column:water_source_up"}, - interval = 1, - chance = 1, - action = function(pos) - local uppos = vector.add(pos, {x = 0, y = 1, z = 0}) - local upposnode = minetest.get_node(uppos) - if upposnode.name == "mcl_core:water_source" then - minetest.set_node(uppos, {name = "mcl_bubble_column:water_source_up"}) - end - end, -} - -minetest.register_abm{ - label = "start bubble column", - nodenames = {"mcl_nether:soul_sand"}, - interval = 1, - chance = 1, - action = function(pos) - local downpos = vector.add(pos, {x = 0, y = 1, z = 0}) - local downposnode = minetest.get_node(downpos) - if downposnode.name == "mcl_core:water_source" then - minetest.set_node(downpos, {name = "mcl_bubble_column:water_source_up"}) - end - end, -} - -minetest.register_abm{ - label = "stop bubble column", - nodenames = {"mcl_bubble_column:water_source_up"}, - interval = 1, - chance = 1, - action = function(pos) - local downpos = vector.add(pos, {x = 0, y = -1, z = 0}) - local downposnode = minetest.get_node(downpos) - if downposnode.name == "mcl_core:water_source" then - minetest.set_node(pos, {name = "mcl_core:water_source"}) - end + minetest.set_node(pos, {name = "mcl_core:water_source"}) + local meta = minetest.get_meta(pos) + meta:set_int("bubbly", 1) end, } minetest.register_abm{ - label = "bubbles up", - nodenames = {"mcl_bubble_column:water_source_up"}, - interval = 1, - chance = 1, - action = function(pos) - minetest.add_particlespawner({ - amount = 10, - time = 0.15, - minpos = vector.add(pos, { x = -0.25, y = 0, z = -0.25 }), - maxpos = vector.add(pos, { x = 0.25, y = 0, z = 0.75 }), - attached = player, - minvel = {x = -0.2, y = 0, z = -0.2}, - maxvel = {x = 0.5, y = 0, z = 0.5}, - minacc = {x = -0.4, y = 4, z = -0.4}, - maxacc = {x = 0.5, y = 1, z = 0.5}, - minexptime = 0.3, - maxexptime = 0.8, - minsize = 0.7, - maxsize = 2.4, - texture = "mcl_particles_bubble.png" - }) - end, -} ---whirlpools(take you down) - - -minetest.register_node("mcl_bubble_column:water_flowing_down", { - description = S("Bubble Column Flowing Water(down)"), - _doc_items_create_entry = false, - wield_image = "default_water_flowing_animated.png^[verticalframe:64:0", - drawtype = "flowingliquid", - tiles = {"default_water_flowing_animated.png^[verticalframe:64:0"}, - special_tiles = { - { - image="default_water_flowing_animated.png", - backface_culling=false, - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} - }, - { - image="default_water_flowing_animated.png", - backface_culling=false, - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} - }, - }, - sounds = mcl_sounds.node_sound_water_defaults(), - is_ground_content = false, - alpha = WATER_ALPHA, - use_texture_alpha = USE_TEXTURE_ALPHA, - paramtype = "light", - paramtype2 = "flowingliquid", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - drop = "", - drowning = 4, - liquidtype = "flowing", - liquid_alternative_flowing = "mcl_bubble_column:water_flowing_down", - liquid_alternative_source = "mcl_bubble_column:water_source_down", - liquid_viscosity = WATER_VISC, - liquid_range = 7, - post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, - groups = { water=3, liquid=3, puts_out_fire=1, not_in_creative_inventory=1, freezes=1, melt_around=1, dig_by_piston=1}, - _mcl_blast_resistance = 100, - -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode - _mcl_hardness = -1, -}) - -minetest.register_node("mcl_bubble_column:water_source_down", { - description = S("Whirlpool Water Source"), - _doc_items_entry_name = S("Water"), - _doc_items_longdesc = S("Takes you down!"), - _doc_items_hidden = false, - drawtype = "liquid", - tiles = { - {name="default_water_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}} - }, - special_tiles = { - -- New-style water source material (mostly unused) - { - name="default_water_source_animated.png", - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}, - backface_culling = false, - } - }, - sounds = mcl_sounds.node_sound_water_defaults(), - is_ground_content = false, - alpha = WATER_ALPHA, - use_texture_alpha = USE_TEXTURE_ALPHA, - paramtype = "light", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - drop = "", - drowning = 4, - liquidtype = "source", - liquid_alternative_flowing = "mcl_bubble_column:water_flowing_down", - liquid_alternative_source = "mcl_bubble_column:water_source_down", - liquid_viscosity = WATER_VISC, - liquid_range = 7, - post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, - stack_max = 64, - groups = { water=3, liquid=3, puts_out_fire=1, not_in_creative_inventory=1, dig_by_piston=1}, - _mcl_blast_resistance = 100, - -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode - _mcl_hardness = -1, -}) - - -minetest.register_globalstep(function() - for _,player in ipairs(minetest.get_connected_players()) do - local name = player:get_player_name() - local pos = player:get_pos() - local node = minetest.get_node(pos) - if node.name == "mcl_bubble_column:water_source_down" then - local velocity = player:get_player_velocity() - local velocityadd = {x = 0, y = -0.5, z = 0} - player:add_player_velocity(velocityadd) - end - end -end) - - -minetest.register_abm{ - label = "entities go down", - nodenames = {"mcl_bubble_column:water_source_down"}, - interval = 0.05, - chance = 1, - action = function(pos) - for _,entity in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do - local pos = entity:get_pos() - local velocity = entity:get_velocity() - local velocityadd = {x = 0, y = -3, z = 0} - entity:add_velocity(velocityadd) - end - end, -} - -minetest.register_abm{ - label = "whirlpools go up", - nodenames = {"mcl_bubble_column:water_source_down"}, - interval = 1, - chance = 1, - action = function(pos) - local uppos = vector.add(pos, {x = 0, y = 1, z = 0}) - local upposnode = minetest.get_node(uppos) - if upposnode.name == "mcl_core:water_source" then - minetest.set_node(uppos, {name = "mcl_bubble_column:water_source_down"}) - end - end, -} - -minetest.register_abm{ - label = "start whirlpool", - nodenames = {"mcl_nether:magma"}, - interval = 1, - chance = 1, - action = function(pos) - local downpos = vector.add(pos, {x = 0, y = 1, z = 0}) - local downposnode = minetest.get_node(downpos) - if downposnode.name == "mcl_core:water_source" then - minetest.set_node(downpos, {name = "mcl_bubble_column:water_source_down"}) - end - end, -} - -minetest.register_abm{ - label = "stop whirlpool", - nodenames = {"mcl_bubble_column:water_source_down"}, - interval = 1, - chance = 1, - action = function(pos) - local downpos = vector.add(pos, {x = 0, y = -1, z = 0}) - local downposnode = minetest.get_node(downpos) - if downposnode.name == "mcl_core:water_source" then - minetest.set_node(pos, {name = "mcl_core:water_source"}) - end - end, -} -minetest.register_abm{ - label = "bubbles down", - nodenames = {"mcl_bubble_column:water_source_down"}, - interval = 1, - chance = 1, - action = function(pos) - minetest.add_particlespawner({ - amount = 10, - time = 0.15, - minpos = vector.add(pos, { x = -0.25, y = 0, z = -0.25 }), - maxpos = vector.add(pos, { x = 0.25, y = 0, z = 0.75 }), - attached = player, - minvel = {x = -0.2, y = 0, z = -0.2}, - maxvel = {x = 0.5, y = 0, z = 0.5}, - minacc = {x = -0.4, y = -4, z = -0.4}, - maxacc = {x = 0.5, y = -1, z = 0.5}, - minexptime = 0.3, - maxexptime = 0.8, - minsize = 0.7, - maxsize = 2.4, - texture = "mcl_particles_bubble.png" - }) - end, -} + label = "replaceWhirlpools", + nodenames = {"mcl_bubble_column:water_source_down"}, + interval = 1,--reduce lag + chance = 1, + action = function(pos) + minetest.set_node(pos, {name = "mcl_core:water_source"}) + local meta = minetest.get_meta(pos) + meta:set_int("whirly", 1) + end, +} \ No newline at end of file From 5f069ae3602a481991cf8628c8219c13f27291da Mon Sep 17 00:00:00 2001 From: kay27 Date: Sat, 11 Dec 2021 03:35:42 +0400 Subject: [PATCH 249/271] Add mcl_tridents mod by j45 --- mods/ITEMS/mcl_tridents/README.md | 3 + mods/ITEMS/mcl_tridents/init.lua | 87 + .../ITEMS/mcl_tridents/models/mcl_trident.obj | 10854 ++++++++++++++++ .../mcl_tridents/textures/mcl_trident_inv.png | Bin 0 -> 299 bytes 4 files changed, 10944 insertions(+) create mode 100644 mods/ITEMS/mcl_tridents/README.md create mode 100644 mods/ITEMS/mcl_tridents/init.lua create mode 100644 mods/ITEMS/mcl_tridents/models/mcl_trident.obj create mode 100644 mods/ITEMS/mcl_tridents/textures/mcl_trident_inv.png diff --git a/mods/ITEMS/mcl_tridents/README.md b/mods/ITEMS/mcl_tridents/README.md new file mode 100644 index 000000000..4aea50d58 --- /dev/null +++ b/mods/ITEMS/mcl_tridents/README.md @@ -0,0 +1,3 @@ +# mcl_tridents by j45 + +Adds tridents to MineClone2. \ No newline at end of file diff --git a/mods/ITEMS/mcl_tridents/init.lua b/mods/ITEMS/mcl_tridents/init.lua new file mode 100644 index 000000000..b20616f16 --- /dev/null +++ b/mods/ITEMS/mcl_tridents/init.lua @@ -0,0 +1,87 @@ +local S = minetest.get_translator("mcl_tridents") +local cooldown = {} + +minetest.register_on_joinplayer(function(player) + cooldown[player:get_player_name()] = false +end) + +minetest.register_on_leaveplayer(function(player) + cooldown[player:get_player_name()] = false +end) + +local GRAVITY = 9.81 +local TRIDENT_DURABILITY = 251 +local TRIDENT_COOLDOWN = 0.91 + +local TRIDENT_ENTITY = { + physical = true, + pointable = false, + visual = "mesh", + mesh = "mcl_trident.obj", + visual_size = {x=-1, y=1}, + textures = {"mcl_trident.png"}, + collisionbox = {-.1, -.1, -1, .1, .1, 0.5}, + collide_with_objects = true, + _fire_damage_resistant = true, + + _lastpos={}, + _startpos=nil, + _damage=8, -- Damage on impact + _is_critical=false, + _stuck=false, -- Whether arrow is stuck + _stucktimer=nil,-- Amount of time (in seconds) the arrow has been stuck so far + _stuckrechecktimer=nil,-- An additional timer for periodically re-checking the stuck status of an arrow + _stuckin=nil, --Position of node in which arow is stuck. + _shooter=nil, -- ObjectRef of player or mob who shot it + + _viscosity=0, -- Viscosity of node the arrow is currently in + _deflection_cooloff=0, -- Cooloff timer after an arrow deflection, to prevent many deflections in quick succession +} + +minetest.register_entity("mcl_tridents:trident_entity", TRIDENT_ENTITY) + +local spawn_trident = function(player) + local wielditem = player:get_wielded_item() + local obj = minetest.add_entity(vector.add(player:get_pos(), {x = 0, y = 1.5, z = 0}), "mcl_tridents:trident_entity") + local yaw = player:get_look_horizontal()+math.pi/2 + + if cooldown[player:get_player_name()] then + return + end + + cooldown[player:get_player_name()] = true + + minetest.after(TRIDENT_COOLDOWN, function() + cooldown[player:get_player_name()] = false + end) + + if obj then + local durability = TRIDENT_DURABILITY + local unbreaking = mcl_enchanting.get_enchantment(wielditem, "unbreaking") + if unbreaking > 0 then + durability = durability * (unbreaking + 1) + end + wielditem:add_wear(65535/durability) + minetest.chat_send_all(wielditem:get_wear()) + obj:set_velocity(vector.multiply(player:get_look_dir(), 20)) + obj:set_acceleration({x=0, y=-GRAVITY, z=0}) + obj:set_yaw(yaw) + end +end + + +minetest.register_tool("mcl_tridents:trident", { + description = S("Trident"), + _tt_help = S("Launches a trident when you rightclick and it is in your hand"), + _doc_items_durability = TRIDENT_DURABILITY, + inventory_image = "mcl_trident_inv.png", + stack_max = 1, + groups = {weapon=1,weapon_ranged=1,trident=1,enchantability=1}, + _mcl_uses = TRIDENT_DURABILITY, + on_place = function(itemstack, placer, pointed_thing) + spawn_trident(placer) + end, + on_secondary_use = function(itemstack, user, pointed_thing) + spawn_trident(user) + end +}) diff --git a/mods/ITEMS/mcl_tridents/models/mcl_trident.obj b/mods/ITEMS/mcl_tridents/models/mcl_trident.obj new file mode 100644 index 000000000..32af51ed6 --- /dev/null +++ b/mods/ITEMS/mcl_tridents/models/mcl_trident.obj @@ -0,0 +1,10854 @@ +# Blender v2.82 (sub 7) OBJ File: 'trident.blend' +# www.blender.org +mtllib trident.mtl +o Cylinder +v -7.194370 -0.000000 0.363753 +v -7.194370 -0.036636 0.367362 +v -7.194370 -0.071864 0.378048 +v -7.194370 -0.104331 0.395402 +v -7.194370 -0.132788 0.418756 +v -7.194370 -0.156142 0.447213 +v -7.194370 -0.173496 0.479680 +v -7.194370 -0.184182 0.514908 +v -7.194370 -0.187791 0.551544 +v -7.194370 -0.184183 0.588180 +v -7.194370 -0.173496 0.623409 +v -7.194370 -0.156142 0.655875 +v -7.194370 -0.132788 0.684332 +v -7.194370 -0.104331 0.707687 +v -7.194370 -0.071864 0.725040 +v -7.194370 -0.036636 0.735727 +v -7.194370 0.000000 0.739335 +v -7.194370 0.036636 0.735727 +v -7.194370 0.071864 0.725040 +v -7.194370 0.104331 0.707687 +v -7.194370 0.132788 0.684332 +v -7.194370 0.156142 0.655875 +v -7.194370 0.173496 0.623408 +v -7.194370 0.184182 0.588180 +v -7.194370 0.187791 0.551544 +v -7.194370 0.184182 0.514908 +v -7.194370 0.173496 0.479680 +v -7.194370 0.156142 0.447213 +v -7.194370 0.132788 0.418756 +v -7.194370 0.104331 0.395402 +v -7.194370 0.071864 0.378048 +v -7.194370 0.036636 0.367362 +v 1.937123 0.000002 0.363752 +v 1.937123 -0.036634 0.367361 +v 1.937123 -0.071862 0.378047 +v 1.937123 -0.104329 0.395401 +v 1.937123 -0.132786 0.418755 +v 1.937123 -0.156140 0.447212 +v 1.937123 -0.173494 0.479679 +v 1.937123 -0.184180 0.514907 +v 1.937123 -0.187789 0.551543 +v 1.937123 -0.184180 0.588179 +v 1.937123 -0.173494 0.623407 +v 1.937123 -0.156140 0.655874 +v 1.937123 -0.132786 0.684331 +v 1.937123 -0.104329 0.707685 +v 1.937123 -0.071862 0.725039 +v 1.937123 -0.036634 0.735725 +v 1.937123 0.000002 0.739334 +v 1.937123 0.036639 0.735725 +v 1.937123 0.071867 0.725039 +v 1.937123 0.104333 0.707685 +v 1.937123 0.132791 0.684331 +v 1.937123 0.156145 0.655874 +v 1.937123 0.173498 0.623407 +v 1.937123 0.184185 0.588179 +v 1.937123 0.187793 0.551543 +v 1.937123 0.184185 0.514907 +v 1.937123 0.173498 0.479678 +v 1.937123 0.156144 0.447212 +v 1.937123 0.132790 0.418755 +v 1.937123 0.104333 0.395400 +v 1.937123 0.071866 0.378047 +v 1.937123 0.036638 0.367360 +v -10.250076 -0.036639 0.367363 +v -10.250076 -0.000002 0.363755 +v -10.250076 -0.071867 0.378049 +v -10.250076 -0.104333 0.395403 +v -10.250076 -0.132791 0.418757 +v -10.250076 -0.156145 0.447214 +v -10.250076 -0.173498 0.479681 +v -10.250076 -0.184185 0.514909 +v -10.250076 -0.187793 0.551545 +v -10.250076 -0.184185 0.588182 +v -10.250076 -0.173498 0.623410 +v -10.250076 -0.156145 0.655876 +v -10.250076 -0.132791 0.684334 +v -10.250076 -0.104333 0.707688 +v -10.250076 -0.071867 0.725042 +v -10.250076 -0.036638 0.735728 +v -10.250076 -0.000002 0.739336 +v -10.250076 0.036634 0.735728 +v -10.250076 0.071862 0.725041 +v -10.250076 0.104329 0.707688 +v -10.250076 0.132786 0.684333 +v -10.250076 0.156140 0.655876 +v -10.250076 0.173494 0.623410 +v -10.250076 0.184180 0.588181 +v -10.250076 0.187788 0.551545 +v -10.250076 0.184180 0.514909 +v -10.250076 0.173494 0.479681 +v -10.250076 0.156140 0.447214 +v -10.250076 0.132786 0.418757 +v -10.250076 0.104328 0.395403 +v -10.250076 0.071862 0.378049 +v -10.250076 0.036634 0.367363 +v -10.614231 -0.046042 0.320092 +v -10.614231 -0.000003 0.315557 +v -10.614231 -0.090311 0.333521 +v -10.614231 -0.131111 0.355328 +v -10.614231 -0.166872 0.384677 +v -10.614231 -0.196220 0.420437 +v -10.614231 -0.218027 0.461237 +v -10.614231 -0.231456 0.505506 +v -10.614231 -0.235991 0.551545 +v -10.614231 -0.231456 0.597584 +v -10.614231 -0.218027 0.641854 +v -10.614231 -0.196220 0.682654 +v -10.614231 -0.166872 0.718414 +v -10.614231 -0.131111 0.747763 +v -10.614231 -0.090311 0.769570 +v -10.614231 -0.046042 0.782999 +v -10.614231 -0.000003 0.787534 +v -10.614231 0.046036 0.782999 +v -10.614231 0.090306 0.769570 +v -10.614231 0.131106 0.747762 +v -10.614231 0.166866 0.718414 +v -10.614231 0.196215 0.682653 +v -10.614231 0.218022 0.641854 +v -10.614231 0.231451 0.597584 +v -10.614231 0.235986 0.551545 +v -10.614231 0.231451 0.505506 +v -10.614231 0.218022 0.461236 +v -10.614231 0.196214 0.420437 +v -10.614231 0.166866 0.384676 +v -10.614231 0.131105 0.355328 +v -10.614231 0.090306 0.333521 +v -10.614231 0.046036 0.320092 +v -11.151556 -0.025116 0.425290 +v -11.151556 -0.000003 0.422816 +v -11.151556 -0.049265 0.432615 +v -11.151556 -0.071521 0.444511 +v -11.151556 -0.091028 0.460520 +v -11.151556 -0.107037 0.480027 +v -11.151556 -0.118933 0.502283 +v -11.151556 -0.126259 0.526432 +v -11.151556 -0.128732 0.551546 +v -11.151556 -0.126259 0.576659 +v -11.151556 -0.118933 0.600808 +v -11.151556 -0.107037 0.623064 +v -11.151556 -0.091028 0.642571 +v -11.151556 -0.071521 0.658580 +v -11.151556 -0.049265 0.670476 +v -11.151556 -0.025116 0.677802 +v -11.151556 -0.000003 0.680275 +v -11.151556 0.025111 0.677801 +v -11.151556 0.049260 0.670476 +v -11.151556 0.071516 0.658580 +v -11.151556 0.091023 0.642571 +v -11.151556 0.107032 0.623064 +v -11.151556 0.118928 0.600808 +v -11.151556 0.126253 0.576659 +v -11.151556 0.128727 0.551545 +v -11.151556 0.126253 0.526432 +v -11.151556 0.118928 0.502283 +v -11.151556 0.107032 0.480027 +v -11.151556 0.091023 0.460520 +v -11.151556 0.071516 0.444511 +v -11.151556 0.049260 0.432615 +v -11.151556 0.025111 0.425290 +v -11.239233 -0.000002 0.551546 +v -7.530121 0.071863 0.725041 +v -7.530121 0.104330 0.707687 +v -7.530121 0.132787 0.684333 +v -7.530121 0.156141 0.655876 +v -7.530121 0.173495 0.623409 +v -7.530121 0.184181 0.588181 +v -7.530121 0.187790 0.551545 +v -7.530121 0.184181 0.514908 +v -7.530121 0.173495 0.479680 +v -7.530121 0.156141 0.447214 +v -7.530121 -0.000001 0.363754 +v -7.530121 -0.036637 0.367362 +v -7.530121 0.132787 0.418756 +v -7.530121 -0.071866 0.378049 +v -7.530121 0.104330 0.395402 +v -7.530121 -0.104332 0.395402 +v -7.530121 0.071863 0.378049 +v -7.530121 -0.132789 0.418757 +v -7.530121 0.036635 0.367362 +v -7.530121 -0.156144 0.447214 +v -7.530121 -0.173497 0.479680 +v -7.530121 -0.184184 0.514909 +v -7.530121 -0.187792 0.551545 +v -7.530121 -0.184184 0.588181 +v -7.530121 -0.173497 0.623409 +v -7.530121 -0.156144 0.655876 +v -7.530121 -0.132789 0.684333 +v -7.530121 -0.104332 0.707687 +v -7.530121 -0.071866 0.725041 +v -7.530121 -0.036637 0.735727 +v -7.530121 -0.000001 0.739336 +v -7.530121 0.036635 0.735727 +v -8.553731 0.071863 0.725041 +v -8.553731 -0.000001 0.363754 +v -8.553731 0.104330 0.707687 +v -8.553731 0.132787 0.684333 +v -8.553731 0.156141 0.655876 +v -8.553731 0.173495 0.623409 +v -8.553731 0.184181 0.588181 +v -8.553731 0.187789 0.551545 +v -8.553731 0.184181 0.514909 +v -8.553731 0.173495 0.479680 +v -8.553731 0.156141 0.447214 +v -8.553731 -0.036638 0.367362 +v -8.553731 0.132787 0.418757 +v -8.553731 -0.071866 0.378049 +v -8.553731 0.104329 0.395402 +v -8.553731 -0.104332 0.395403 +v -8.553731 0.071863 0.378049 +v -8.553731 -0.132790 0.418757 +v -8.553731 0.036634 0.367362 +v -8.553731 -0.156144 0.447214 +v -8.553731 -0.173498 0.479680 +v -8.553731 -0.184184 0.514909 +v -8.553731 -0.187792 0.551545 +v -8.553731 -0.184184 0.588181 +v -8.553731 -0.173498 0.623409 +v -8.553731 -0.156144 0.655876 +v -8.553731 -0.132790 0.684333 +v -8.553731 -0.104332 0.707687 +v -8.553731 -0.071866 0.725041 +v -8.553731 -0.036638 0.735727 +v -8.553731 -0.000001 0.739336 +v -8.553731 0.036635 0.735727 +v -8.474993 0.123192 0.735917 +v -8.391620 0.097399 0.697315 +v -8.322146 0.097399 0.697315 +v -8.234142 0.097399 0.697315 +v -8.164668 0.097399 0.697315 +v -8.076663 0.097399 0.697315 +v -8.007189 0.097399 0.697315 +v -7.919184 0.097399 0.697315 +v -7.849711 0.097399 0.697315 +v -7.761706 0.097399 0.697315 +v -7.692232 0.097399 0.697315 +v -7.608860 0.123192 0.735917 +v -8.474993 0.156794 0.708340 +v -8.391620 0.123966 0.675512 +v -8.322146 0.123966 0.675512 +v -8.234142 0.123966 0.675512 +v -8.164668 0.123966 0.675512 +v -8.076663 0.123966 0.675512 +v -8.007189 0.123966 0.675512 +v -7.919184 0.123966 0.675512 +v -7.849711 0.123966 0.675512 +v -7.761706 0.123966 0.675512 +v -7.692232 0.123966 0.675512 +v -7.608860 0.156795 0.708340 +v -8.474993 0.184371 0.674738 +v -8.391620 0.145769 0.648945 +v -8.322146 0.145769 0.648945 +v -8.234142 0.145769 0.648945 +v -8.164668 0.145769 0.648945 +v -8.076663 0.145769 0.648945 +v -8.007189 0.145769 0.648945 +v -7.919184 0.145769 0.648945 +v -7.849711 0.145769 0.648945 +v -7.761706 0.145769 0.648945 +v -7.692232 0.145769 0.648945 +v -7.608860 0.184371 0.674738 +v -8.474993 0.204862 0.636402 +v -8.391620 0.161970 0.618635 +v -8.322146 0.161970 0.618635 +v -8.234142 0.161970 0.618635 +v -8.164668 0.161970 0.618635 +v -8.076663 0.161970 0.618635 +v -8.007189 0.161970 0.618635 +v -7.919184 0.161970 0.618635 +v -7.849711 0.161970 0.618635 +v -7.761706 0.161970 0.618635 +v -7.692232 0.161970 0.618635 +v -7.608860 0.204862 0.636402 +v -8.474993 0.217480 0.594805 +v -8.391620 0.171946 0.585747 +v -8.322146 0.171946 0.585747 +v -8.234142 0.171946 0.585747 +v -8.164668 0.171946 0.585747 +v -8.076663 0.171946 0.585747 +v -8.007189 0.171946 0.585747 +v -7.919184 0.171946 0.585747 +v -7.849711 0.171946 0.585747 +v -7.761706 0.171946 0.585747 +v -7.692232 0.171946 0.585747 +v -7.608860 0.217481 0.594804 +v -8.474993 0.221741 0.551545 +v -8.391620 0.175315 0.551545 +v -8.322146 0.175315 0.551545 +v -8.234142 0.175315 0.551545 +v -8.164668 0.175315 0.551545 +v -8.076663 0.175315 0.551545 +v -8.007189 0.175315 0.551545 +v -7.919184 0.175315 0.551545 +v -7.849711 0.175315 0.551545 +v -7.761706 0.175315 0.551545 +v -7.692232 0.175315 0.551545 +v -7.608860 0.221741 0.551545 +v -8.474993 0.217480 0.508285 +v -8.391620 0.171946 0.517342 +v -8.322146 0.171946 0.517342 +v -8.234142 0.171946 0.517342 +v -8.164668 0.171946 0.517342 +v -8.076663 0.171946 0.517342 +v -8.007189 0.171946 0.517342 +v -7.919184 0.171946 0.517342 +v -7.849711 0.171946 0.517342 +v -7.761706 0.171946 0.517342 +v -7.692232 0.171946 0.517342 +v -7.608860 0.217481 0.508285 +v -8.474993 0.204862 0.466688 +v -8.391620 0.161969 0.484454 +v -8.322146 0.161969 0.484454 +v -8.234142 0.161969 0.484454 +v -8.164668 0.161969 0.484454 +v -8.076663 0.161969 0.484454 +v -8.007189 0.161970 0.484454 +v -7.919184 0.161970 0.484454 +v -7.849711 0.161970 0.484454 +v -7.761706 0.161970 0.484454 +v -7.692232 0.161970 0.484454 +v -7.608860 0.204862 0.466687 +v -8.474993 0.184371 0.428351 +v -8.391620 0.145768 0.454144 +v -8.322146 0.145768 0.454144 +v -8.234142 0.145768 0.454144 +v -8.164668 0.145768 0.454144 +v -8.076663 0.145769 0.454144 +v -8.007189 0.145769 0.454144 +v -7.919184 0.145769 0.454144 +v -7.849711 0.145769 0.454144 +v -7.761706 0.145769 0.454144 +v -7.692232 0.145769 0.454144 +v -7.608860 0.184371 0.428351 +v -8.474993 -0.043261 0.334063 +v -8.391620 -0.034204 0.379597 +v -8.322146 -0.034204 0.379597 +v -8.234142 -0.034204 0.379597 +v -8.164668 -0.034204 0.379597 +v -8.076663 -0.034204 0.379597 +v -8.007189 -0.034204 0.379597 +v -7.919184 -0.034204 0.379597 +v -7.849711 -0.034204 0.379597 +v -7.761706 -0.034204 0.379597 +v -7.692232 -0.034204 0.379597 +v -7.608860 -0.043261 0.334063 +v -8.474993 0.156794 0.394749 +v -8.391620 0.123966 0.427578 +v -8.322146 0.123966 0.427578 +v -8.234142 0.123966 0.427578 +v -8.164668 0.123966 0.427578 +v -8.076663 0.123966 0.427578 +v -8.007189 0.123966 0.427578 +v -7.919184 0.123966 0.427578 +v -7.849711 0.123966 0.427577 +v -7.761706 0.123966 0.427577 +v -7.692232 0.123966 0.427577 +v -7.608860 0.156794 0.394749 +v -8.474993 -0.084859 0.346682 +v -8.391620 -0.067092 0.389574 +v -8.322146 -0.067092 0.389574 +v -8.234142 -0.067092 0.389574 +v -8.164668 -0.067092 0.389574 +v -8.076663 -0.067092 0.389574 +v -8.007189 -0.067092 0.389574 +v -7.919184 -0.067092 0.389574 +v -7.849711 -0.067092 0.389574 +v -7.761706 -0.067092 0.389574 +v -7.692232 -0.067092 0.389574 +v -7.608860 -0.084858 0.346681 +v -8.474993 0.123192 0.367173 +v -8.391620 0.097399 0.405775 +v -8.322146 0.097399 0.405775 +v -8.234142 0.097399 0.405775 +v -8.164668 0.097399 0.405775 +v -8.076663 0.097399 0.405775 +v -8.007189 0.097399 0.405775 +v -7.919184 0.097399 0.405775 +v -7.849711 0.097399 0.405775 +v -7.761706 0.097399 0.405775 +v -7.692232 0.097399 0.405775 +v -7.608860 0.123192 0.367173 +v -8.474993 -0.123195 0.367173 +v -8.391620 -0.097402 0.405775 +v -8.322146 -0.097402 0.405775 +v -8.234142 -0.097402 0.405775 +v -8.164668 -0.097402 0.405775 +v -8.076663 -0.097402 0.405775 +v -8.007189 -0.097402 0.405775 +v -7.919184 -0.097402 0.405775 +v -7.849711 -0.097402 0.405775 +v -7.761706 -0.097402 0.405775 +v -7.692232 -0.097402 0.405775 +v -7.608860 -0.123195 0.367173 +v -8.474993 0.084855 0.346681 +v -8.391620 0.067089 0.389574 +v -8.322146 0.067089 0.389574 +v -8.234142 0.067089 0.389574 +v -8.164668 0.067089 0.389574 +v -8.076663 0.067089 0.389574 +v -8.007189 0.067089 0.389574 +v -7.919184 0.067089 0.389574 +v -7.849711 0.067089 0.389574 +v -7.761706 0.067089 0.389574 +v -7.692232 0.067089 0.389574 +v -7.608860 0.084856 0.346681 +v -8.474993 -0.156797 0.394749 +v -8.391620 -0.123969 0.427578 +v -8.322146 -0.123969 0.427578 +v -8.234142 -0.123968 0.427578 +v -8.164668 -0.123968 0.427578 +v -8.076663 -0.123968 0.427578 +v -8.007189 -0.123968 0.427578 +v -7.919184 -0.123968 0.427578 +v -7.849711 -0.123968 0.427578 +v -7.761706 -0.123968 0.427578 +v -7.692232 -0.123968 0.427578 +v -7.608860 -0.156797 0.394749 +v -8.474993 0.043258 0.334063 +v -8.391620 0.034201 0.379597 +v -8.322146 0.034201 0.379597 +v -8.234142 0.034201 0.379597 +v -8.164668 0.034201 0.379597 +v -8.076663 0.034201 0.379597 +v -8.007189 0.034201 0.379597 +v -7.919184 0.034201 0.379597 +v -7.849711 0.034201 0.379597 +v -7.761706 0.034201 0.379597 +v -7.692232 0.034201 0.379597 +v -7.608860 0.043258 0.334063 +v -8.474993 -0.184374 0.428351 +v -8.391620 -0.145771 0.454145 +v -8.322146 -0.145771 0.454145 +v -8.234142 -0.145771 0.454145 +v -8.164668 -0.145771 0.454145 +v -8.076663 -0.145771 0.454144 +v -8.007189 -0.145771 0.454144 +v -7.919184 -0.145771 0.454144 +v -7.849711 -0.145771 0.454144 +v -7.761706 -0.145771 0.454144 +v -7.692232 -0.145771 0.454144 +v -7.608860 -0.184373 0.428351 +v -8.474993 -0.204865 0.466688 +v -8.391620 -0.161972 0.484454 +v -8.322146 -0.161972 0.484454 +v -8.234142 -0.161972 0.484454 +v -8.164668 -0.161972 0.484454 +v -8.076663 -0.161972 0.484454 +v -8.007189 -0.161972 0.484454 +v -7.919184 -0.161972 0.484454 +v -7.849711 -0.161972 0.484454 +v -7.761706 -0.161972 0.484454 +v -7.692232 -0.161972 0.484454 +v -7.608860 -0.204864 0.466688 +v -8.474993 -0.217483 0.508285 +v -8.391620 -0.171949 0.517342 +v -8.322146 -0.171949 0.517342 +v -8.234142 -0.171949 0.517342 +v -8.164668 -0.171949 0.517342 +v -8.076663 -0.171949 0.517342 +v -8.007189 -0.171949 0.517342 +v -7.919184 -0.171949 0.517342 +v -7.849711 -0.171949 0.517342 +v -7.761706 -0.171949 0.517342 +v -7.692232 -0.171949 0.517342 +v -7.608860 -0.217483 0.508285 +v -8.474993 -0.221744 0.551545 +v -8.391620 -0.175317 0.551545 +v -8.322146 -0.175317 0.551545 +v -8.234142 -0.175317 0.551545 +v -8.164668 -0.175317 0.551545 +v -8.076663 -0.175317 0.551545 +v -8.007189 -0.175317 0.551545 +v -7.919184 -0.175317 0.551545 +v -7.849711 -0.175317 0.551545 +v -7.761706 -0.175317 0.551545 +v -7.692232 -0.175317 0.551545 +v -7.608860 -0.221744 0.551545 +v -8.474993 -0.217483 0.594805 +v -8.391620 -0.171949 0.585747 +v -8.322146 -0.171949 0.585747 +v -8.234142 -0.171949 0.585747 +v -8.164668 -0.171949 0.585747 +v -8.076663 -0.171949 0.585747 +v -8.007189 -0.171949 0.585747 +v -7.919184 -0.171949 0.585747 +v -7.849711 -0.171949 0.585747 +v -7.761706 -0.171949 0.585747 +v -7.692232 -0.171949 0.585747 +v -7.608860 -0.217483 0.594805 +v -8.474993 -0.204865 0.636402 +v -8.391620 -0.161972 0.618635 +v -8.322146 -0.161972 0.618635 +v -8.234142 -0.161972 0.618635 +v -8.164668 -0.161972 0.618635 +v -8.076663 -0.161972 0.618635 +v -8.007189 -0.161972 0.618635 +v -7.919184 -0.161972 0.618635 +v -7.849711 -0.161972 0.618635 +v -7.761706 -0.161972 0.618635 +v -7.692232 -0.161972 0.618635 +v -7.608860 -0.204864 0.636402 +v -8.474993 -0.184374 0.674738 +v -8.391620 -0.145771 0.648945 +v -8.322146 -0.145771 0.648945 +v -8.234142 -0.145771 0.648945 +v -8.164668 -0.145771 0.648945 +v -8.076663 -0.145771 0.648945 +v -8.007189 -0.145771 0.648945 +v -7.919184 -0.145771 0.648945 +v -7.849711 -0.145771 0.648945 +v -7.761706 -0.145771 0.648945 +v -7.692232 -0.145771 0.648945 +v -7.608860 -0.184373 0.674738 +v -8.474993 -0.156797 0.708341 +v -8.391620 -0.123969 0.675512 +v -8.322146 -0.123969 0.675512 +v -8.234142 -0.123968 0.675512 +v -8.164668 -0.123968 0.675512 +v -8.076663 -0.123968 0.675512 +v -8.007189 -0.123968 0.675512 +v -7.919184 -0.123968 0.675512 +v -7.849711 -0.123968 0.675512 +v -7.761706 -0.123968 0.675512 +v -7.692232 -0.123968 0.675512 +v -7.608860 -0.156797 0.708340 +v -8.474993 -0.123195 0.735917 +v -8.391620 -0.097402 0.697315 +v -8.322146 -0.097402 0.697315 +v -8.234142 -0.097402 0.697315 +v -8.164668 -0.097402 0.697315 +v -8.076663 -0.097402 0.697315 +v -8.007189 -0.097402 0.697315 +v -7.919184 -0.097402 0.697315 +v -7.849711 -0.097402 0.697315 +v -7.761706 -0.097402 0.697315 +v -7.692232 -0.097402 0.697315 +v -7.608860 -0.123195 0.735917 +v -8.474993 -0.084859 0.756408 +v -8.391620 -0.067092 0.713516 +v -8.322146 -0.067092 0.713516 +v -8.234142 -0.067092 0.713516 +v -8.164668 -0.067092 0.713516 +v -8.076663 -0.067092 0.713516 +v -8.007189 -0.067092 0.713516 +v -7.919184 -0.067092 0.713516 +v -7.849711 -0.067092 0.713516 +v -7.761706 -0.067092 0.713516 +v -7.692232 -0.067092 0.713516 +v -7.608860 -0.084858 0.756408 +v -8.474993 -0.043261 0.769027 +v -8.391620 -0.034204 0.723492 +v -8.322146 -0.034204 0.723492 +v -8.234142 -0.034204 0.723492 +v -8.164668 -0.034204 0.723492 +v -8.076663 -0.034204 0.723492 +v -8.007189 -0.034204 0.723492 +v -7.919184 -0.034204 0.723492 +v -7.849711 -0.034204 0.723492 +v -7.761706 -0.034204 0.723492 +v -7.692232 -0.034204 0.723492 +v -7.608860 -0.043261 0.769027 +v -8.474993 -0.000001 0.773287 +v -8.391620 -0.000001 0.726861 +v -8.322146 -0.000001 0.726861 +v -8.234142 -0.000001 0.726861 +v -8.164668 -0.000001 0.726861 +v -8.076663 -0.000001 0.726861 +v -8.007189 -0.000001 0.726861 +v -7.919184 -0.000001 0.726861 +v -7.849711 -0.000001 0.726861 +v -7.761706 -0.000001 0.726861 +v -7.692232 -0.000001 0.726861 +v -7.608860 -0.000001 0.773287 +v -8.474993 0.043258 0.769027 +v -8.391620 0.034201 0.723492 +v -8.322146 0.034201 0.723492 +v -8.234142 0.034201 0.723492 +v -8.164668 0.034201 0.723492 +v -8.076663 0.034201 0.723492 +v -8.007189 0.034201 0.723492 +v -7.919184 0.034201 0.723492 +v -7.849711 0.034201 0.723492 +v -7.761706 0.034201 0.723492 +v -7.692232 0.034201 0.723492 +v -7.608860 0.043259 0.769027 +v -7.608860 0.084856 0.756408 +v -7.692232 0.067089 0.713516 +v -7.761706 0.067089 0.713516 +v -7.849711 0.067089 0.713516 +v -7.919185 0.067089 0.713516 +v -8.007190 0.067089 0.713516 +v -8.076663 0.067089 0.713516 +v -8.164668 0.067089 0.713516 +v -8.234142 0.067089 0.713516 +v -8.322147 0.067089 0.713516 +v -8.391620 0.067089 0.713516 +v -8.474993 0.084856 0.756408 +v -7.608860 -0.000001 0.329802 +v -7.692232 -0.000001 0.376229 +v -7.761706 -0.000001 0.376229 +v -7.849711 -0.000001 0.376229 +v -7.919185 -0.000001 0.376229 +v -8.007190 -0.000001 0.376229 +v -8.076663 -0.000001 0.376229 +v -8.164668 -0.000001 0.376229 +v -8.234142 -0.000001 0.376229 +v -8.322147 -0.000001 0.376229 +v -8.391620 -0.000001 0.376229 +v -8.474993 -0.000001 0.329802 +v -8.199405 0.111421 0.718300 +v -8.199405 0.141812 0.693358 +v -8.199405 0.166754 0.662967 +v -8.199405 0.185287 0.628294 +v -8.199405 0.196699 0.590671 +v -8.199405 0.200553 0.551545 +v -8.199405 0.196699 0.512418 +v -8.199405 0.185287 0.474796 +v -8.199405 0.166753 0.440123 +v -8.199405 -0.039128 0.354844 +v -8.199405 0.141812 0.409731 +v -8.199405 -0.076750 0.366257 +v -8.199405 0.111420 0.384790 +v -8.199405 -0.111423 0.384790 +v -8.199405 0.076747 0.366257 +v -8.199405 -0.141815 0.409732 +v -8.199405 0.039125 0.354844 +v -8.199405 -0.166756 0.440123 +v -8.199405 -0.185289 0.474796 +v -8.199405 -0.196702 0.512419 +v -8.199405 -0.200556 0.551545 +v -8.199405 -0.196702 0.590671 +v -8.199405 -0.185289 0.628294 +v -8.199405 -0.166756 0.662967 +v -8.199405 -0.141815 0.693358 +v -8.199405 -0.111423 0.718300 +v -8.199405 -0.076750 0.736833 +v -8.199405 -0.039127 0.748246 +v -8.199405 -0.000001 0.752099 +v -8.199405 0.039125 0.748246 +v -8.199405 0.076748 0.736833 +v -8.199405 -0.000001 0.350991 +v -8.041925 0.111421 0.718300 +v -8.041925 0.141812 0.693358 +v -8.041925 0.166754 0.662967 +v -8.041925 0.185287 0.628294 +v -8.041925 0.196699 0.590671 +v -8.041925 0.200553 0.551545 +v -8.041925 0.196699 0.512418 +v -8.041925 0.185287 0.474796 +v -8.041925 0.166753 0.440123 +v -8.041925 -0.039127 0.354844 +v -8.041925 0.141812 0.409731 +v -8.041925 -0.076750 0.366257 +v -8.041925 0.111420 0.384790 +v -8.041925 -0.111423 0.384790 +v -8.041925 0.076747 0.366257 +v -8.041925 -0.141815 0.409732 +v -8.041925 0.039125 0.354844 +v -8.041925 -0.166756 0.440123 +v -8.041925 -0.185289 0.474796 +v -8.041925 -0.196702 0.512419 +v -8.041925 -0.200556 0.551545 +v -8.041925 -0.196702 0.590671 +v -8.041925 -0.185289 0.628294 +v -8.041925 -0.166756 0.662967 +v -8.041925 -0.141815 0.693358 +v -8.041925 -0.111423 0.718300 +v -8.041925 -0.076750 0.736833 +v -8.041925 -0.039127 0.748245 +v -8.041925 -0.000001 0.752099 +v -8.041925 0.039125 0.748245 +v -8.041927 0.076748 0.736833 +v -8.041927 -0.000001 0.350991 +v -7.884447 0.111421 0.718300 +v -7.884447 0.141812 0.693358 +v -7.884447 0.166754 0.662967 +v -7.884447 0.185287 0.628294 +v -7.884447 0.196700 0.590671 +v -7.884447 0.200553 0.551545 +v -7.884447 0.196699 0.512418 +v -7.884447 0.185287 0.474796 +v -7.884447 0.166753 0.440123 +v -7.884447 -0.039127 0.354844 +v -7.884447 0.141812 0.409731 +v -7.884447 -0.076750 0.366257 +v -7.884447 0.111421 0.384790 +v -7.884447 -0.111423 0.384790 +v -7.884447 0.076747 0.366257 +v -7.884447 -0.141815 0.409732 +v -7.884447 0.039125 0.354844 +v -7.884447 -0.166756 0.440123 +v -7.884447 -0.185289 0.474796 +v -7.884447 -0.196702 0.512419 +v -7.884447 -0.200556 0.551545 +v -7.884447 -0.196702 0.590671 +v -7.884447 -0.185289 0.628294 +v -7.884447 -0.166756 0.662967 +v -7.884447 -0.141815 0.693358 +v -7.884447 -0.111423 0.718300 +v -7.884447 -0.076750 0.736833 +v -7.884447 -0.039127 0.748245 +v -7.884447 -0.000001 0.752099 +v -7.884447 0.039125 0.748245 +v -7.884448 0.076748 0.736833 +v -7.884448 -0.000001 0.350991 +v -1.638910 0.184184 0.514907 +v -1.638910 0.187792 0.551543 +v -1.638910 0.173497 0.479679 +v -1.638910 0.156144 0.447212 +v -1.638910 -0.036635 0.367361 +v -1.638910 0.000001 0.363753 +v -1.638910 0.132789 0.418755 +v -1.638910 -0.071863 0.378047 +v -1.638910 0.104332 0.395401 +v -1.638910 -0.104330 0.395401 +v -1.638910 0.071866 0.378047 +v -1.638910 -0.132787 0.418755 +v -1.638910 0.036637 0.367361 +v -1.638910 -0.156141 0.447212 +v -1.638910 -0.173495 0.479679 +v -1.638910 -0.184181 0.514907 +v -1.638910 -0.187789 0.551543 +v -1.638910 -0.184181 0.588180 +v -1.638910 -0.173495 0.623408 +v -1.638910 -0.156141 0.655874 +v -1.638910 -0.132787 0.684332 +v -1.638910 -0.104330 0.707686 +v -1.638910 -0.071863 0.725040 +v -1.638910 -0.036635 0.735726 +v -1.638910 0.000001 0.739334 +v -1.638910 0.036638 0.735726 +v -1.638910 0.071866 0.725040 +v -1.638910 0.104332 0.707686 +v -1.638910 0.132790 0.684332 +v -1.638910 0.156144 0.655874 +v -1.638910 0.173498 0.623408 +v -1.638910 0.184184 0.588179 +v -0.727585 0.184184 0.514907 +v -0.727585 0.173498 0.479679 +v -0.727585 0.156144 0.447212 +v -0.727585 -0.036635 0.367361 +v -0.727585 0.132790 0.418755 +v -0.727585 -0.071863 0.378047 +v -0.727585 0.104332 0.395401 +v -0.727585 -0.104329 0.395401 +v -0.727585 0.071866 0.378047 +v -0.727585 -0.132787 0.418755 +v -0.727585 0.036637 0.367361 +v -0.727585 -0.156141 0.447212 +v -0.727585 -0.173494 0.479679 +v -0.727585 -0.184181 0.514907 +v -0.727585 -0.187789 0.551543 +v -0.727585 -0.184181 0.588179 +v -0.727585 -0.173495 0.623408 +v -0.727585 -0.156141 0.655874 +v -0.727585 -0.132787 0.684331 +v -0.727585 -0.104329 0.707686 +v -0.727585 -0.071863 0.725039 +v -0.727585 -0.036635 0.735726 +v -0.727585 0.000002 0.739334 +v -0.727585 0.036638 0.735726 +v -0.727585 0.071866 0.725039 +v -0.727585 0.104333 0.707686 +v -0.727585 0.132790 0.684331 +v -0.727585 0.156144 0.655874 +v -0.727585 0.173498 0.623408 +v -0.727585 0.184184 0.588179 +v -0.727585 0.187792 0.551543 +v -0.727585 0.000002 0.363753 +v -0.766329 0.220916 0.551543 +v -0.885448 0.188261 0.551543 +v -1.004568 0.188261 0.551543 +v -1.123686 0.188261 0.551543 +v -1.242805 0.188261 0.551543 +v -1.361924 0.188261 0.551543 +v -1.481043 0.188261 0.551543 +v -1.600163 0.220916 0.551543 +v -0.766329 0.000002 0.330629 +v -0.885448 0.000002 0.363284 +v -1.004568 0.000002 0.363284 +v -1.123686 0.000001 0.363284 +v -1.242805 0.000001 0.363284 +v -1.361924 0.000001 0.363284 +v -1.481043 0.000001 0.363284 +v -1.600163 0.000001 0.330629 +v -1.600163 0.216671 0.508445 +v -1.481043 0.184644 0.514816 +v -1.361925 0.184644 0.514816 +v -1.242805 0.184644 0.514816 +v -1.123686 0.184644 0.514816 +v -1.004568 0.184644 0.514816 +v -0.885449 0.184644 0.514816 +v -0.766329 0.216671 0.508445 +v -1.600163 0.204100 0.467003 +v -1.481043 0.173931 0.479499 +v -1.361925 0.173931 0.479499 +v -1.242805 0.173931 0.479499 +v -1.123686 0.173931 0.479499 +v -1.004568 0.173931 0.479499 +v -0.885449 0.173931 0.479499 +v -0.766329 0.204100 0.467003 +v -1.600163 0.183685 0.428810 +v -1.481043 0.156534 0.446952 +v -1.361925 0.156534 0.446952 +v -1.242805 0.156534 0.446952 +v -1.123686 0.156534 0.446952 +v -1.004568 0.156534 0.446952 +v -0.885449 0.156534 0.446952 +v -0.766329 0.183685 0.428810 +v -1.600163 -0.043097 0.334874 +v -1.481043 -0.036726 0.366901 +v -1.361925 -0.036726 0.366901 +v -1.242805 -0.036726 0.366901 +v -1.123686 -0.036726 0.366901 +v -1.004568 -0.036726 0.366901 +v -0.885449 -0.036726 0.366901 +v -0.766329 -0.043097 0.334874 +v -1.600163 0.156211 0.395333 +v -1.481043 0.133121 0.418424 +v -1.361925 0.133121 0.418424 +v -1.242805 0.133121 0.418423 +v -1.123686 0.133121 0.418423 +v -1.004568 0.133121 0.418423 +v -0.885449 0.133121 0.418423 +v -0.766329 0.156212 0.395333 +v -1.600163 -0.084539 0.347445 +v -1.481043 -0.072043 0.377614 +v -1.361925 -0.072042 0.377614 +v -1.242805 -0.072042 0.377614 +v -1.123686 -0.072042 0.377614 +v -1.004568 -0.072042 0.377614 +v -0.885449 -0.072042 0.377614 +v -0.766329 -0.084539 0.347445 +v -1.600163 0.122735 0.367860 +v -1.481043 0.104593 0.395011 +v -1.361925 0.104593 0.395011 +v -1.242805 0.104593 0.395011 +v -1.123686 0.104593 0.395011 +v -1.004568 0.104593 0.395011 +v -0.885449 0.104593 0.395011 +v -0.766329 0.122735 0.367860 +v -1.600163 -0.122732 0.367860 +v -1.481043 -0.104590 0.395011 +v -1.361925 -0.104590 0.395011 +v -1.242805 -0.104590 0.395011 +v -1.123686 -0.104590 0.395011 +v -1.004568 -0.104590 0.395011 +v -0.885449 -0.104590 0.395011 +v -0.766329 -0.122732 0.367860 +v -1.600163 0.084541 0.347445 +v -1.481043 0.072045 0.377614 +v -1.361925 0.072045 0.377614 +v -1.242805 0.072045 0.377614 +v -1.123686 0.072045 0.377614 +v -1.004568 0.072045 0.377614 +v -0.885449 0.072045 0.377614 +v -0.766329 0.084542 0.347445 +v -1.600163 -0.156209 0.395333 +v -1.481043 -0.133118 0.418424 +v -1.361925 -0.133118 0.418424 +v -1.242805 -0.133118 0.418424 +v -1.123686 -0.133118 0.418424 +v -1.004568 -0.133118 0.418424 +v -0.885449 -0.133118 0.418424 +v -0.766329 -0.156209 0.395333 +v -1.600163 0.043099 0.334874 +v -1.481043 0.036729 0.366901 +v -1.361925 0.036729 0.366901 +v -1.242805 0.036729 0.366901 +v -1.123686 0.036729 0.366901 +v -1.004568 0.036729 0.366901 +v -0.885449 0.036729 0.366901 +v -0.766329 0.043100 0.334874 +v -1.600163 -0.183682 0.428810 +v -1.481043 -0.156531 0.446952 +v -1.361925 -0.156531 0.446952 +v -1.242805 -0.156531 0.446952 +v -1.123686 -0.156531 0.446952 +v -1.004568 -0.156531 0.446952 +v -0.885449 -0.156531 0.446952 +v -0.766329 -0.183682 0.428810 +v -1.600163 -0.204097 0.467003 +v -1.481043 -0.173928 0.479500 +v -1.361925 -0.173928 0.479500 +v -1.242805 -0.173928 0.479500 +v -1.123686 -0.173928 0.479500 +v -1.004568 -0.173928 0.479499 +v -0.885449 -0.173928 0.479499 +v -0.766329 -0.204097 0.467003 +v -1.600163 -0.216668 0.508445 +v -1.481043 -0.184641 0.514816 +v -1.361925 -0.184641 0.514816 +v -1.242805 -0.184641 0.514816 +v -1.123686 -0.184641 0.514816 +v -1.004568 -0.184641 0.514816 +v -0.885449 -0.184641 0.514816 +v -0.766329 -0.216668 0.508445 +v -1.600163 -0.220913 0.551543 +v -1.481043 -0.188258 0.551543 +v -1.361925 -0.188258 0.551543 +v -1.242805 -0.188258 0.551543 +v -1.123686 -0.188258 0.551543 +v -1.004568 -0.188258 0.551543 +v -0.885449 -0.188258 0.551543 +v -0.766329 -0.220913 0.551543 +v -1.600163 -0.216668 0.594642 +v -1.481043 -0.184641 0.588271 +v -1.361925 -0.184641 0.588271 +v -1.242805 -0.184641 0.588271 +v -1.123686 -0.184641 0.588271 +v -1.004568 -0.184641 0.588271 +v -0.885449 -0.184641 0.588271 +v -0.766329 -0.216668 0.594642 +v -1.600163 -0.204097 0.636084 +v -1.481043 -0.173928 0.623587 +v -1.361925 -0.173928 0.623587 +v -1.242805 -0.173928 0.623587 +v -1.123686 -0.173928 0.623587 +v -1.004568 -0.173928 0.623587 +v -0.885449 -0.173928 0.623587 +v -0.766329 -0.204097 0.636084 +v -1.600163 -0.183682 0.674277 +v -1.481043 -0.156531 0.656135 +v -1.361925 -0.156531 0.656135 +v -1.242805 -0.156531 0.656135 +v -1.123686 -0.156531 0.656135 +v -1.004568 -0.156531 0.656135 +v -0.885449 -0.156531 0.656135 +v -0.766329 -0.183682 0.674277 +v -1.600163 -0.156209 0.707754 +v -1.481043 -0.133118 0.684663 +v -1.361925 -0.133118 0.684663 +v -1.242805 -0.133118 0.684663 +v -1.123686 -0.133118 0.684663 +v -1.004568 -0.133118 0.684663 +v -0.885449 -0.133118 0.684663 +v -0.766329 -0.156209 0.707753 +v -1.600163 -0.122732 0.735227 +v -1.481043 -0.104590 0.708076 +v -1.361925 -0.104590 0.708076 +v -1.242805 -0.104590 0.708076 +v -1.123686 -0.104590 0.708076 +v -1.004568 -0.104590 0.708076 +v -0.885449 -0.104590 0.708076 +v -0.766329 -0.122732 0.735227 +v -1.600163 -0.084539 0.755642 +v -1.481043 -0.072042 0.725473 +v -1.361925 -0.072042 0.725473 +v -1.242805 -0.072042 0.725473 +v -1.123686 -0.072042 0.725473 +v -1.004568 -0.072042 0.725473 +v -0.885449 -0.072042 0.725473 +v -0.766329 -0.084539 0.755642 +v -1.600163 -0.043097 0.768213 +v -1.481043 -0.036726 0.736186 +v -1.361925 -0.036726 0.736186 +v -1.242805 -0.036726 0.736186 +v -1.123686 -0.036726 0.736186 +v -1.004568 -0.036726 0.736186 +v -0.885449 -0.036726 0.736186 +v -0.766329 -0.043097 0.768213 +v -1.600163 0.000001 0.772458 +v -1.481043 0.000001 0.739803 +v -1.361925 0.000001 0.739803 +v -1.242805 0.000002 0.739803 +v -1.123686 0.000002 0.739803 +v -1.004568 0.000002 0.739803 +v -0.885449 0.000002 0.739803 +v -0.766329 0.000002 0.772458 +v -1.600163 0.043100 0.768213 +v -1.481043 0.036729 0.736186 +v -1.361925 0.036729 0.736186 +v -1.242805 0.036729 0.736186 +v -1.123686 0.036729 0.736186 +v -1.004568 0.036729 0.736186 +v -0.885449 0.036729 0.736186 +v -0.766329 0.043100 0.768213 +v -1.600163 0.084542 0.755642 +v -1.481043 0.072045 0.725473 +v -1.361925 0.072045 0.725473 +v -1.242805 0.072045 0.725473 +v -1.123686 0.072045 0.725473 +v -1.004568 0.072045 0.725473 +v -0.885449 0.072046 0.725473 +v -0.766329 0.084542 0.755642 +v -1.600163 0.122735 0.735227 +v -1.481043 0.104593 0.708076 +v -1.361925 0.104593 0.708076 +v -1.242805 0.104593 0.708076 +v -1.123686 0.104593 0.708076 +v -1.004568 0.104593 0.708076 +v -0.885449 0.104593 0.708076 +v -0.766329 0.122735 0.735227 +v -1.600163 0.156212 0.707753 +v -1.481043 0.133121 0.684663 +v -1.361925 0.133121 0.684663 +v -1.242805 0.133121 0.684663 +v -1.123686 0.133121 0.684663 +v -1.004568 0.133121 0.684663 +v -0.885449 0.133121 0.684663 +v -0.766329 0.156212 0.707753 +v -1.600163 0.183685 0.674277 +v -1.481043 0.156534 0.656135 +v -1.361925 0.156534 0.656135 +v -1.242805 0.156534 0.656135 +v -1.123686 0.156534 0.656135 +v -1.004568 0.156534 0.656135 +v -0.885449 0.156534 0.656135 +v -0.766329 0.183685 0.674277 +v -1.600163 0.204100 0.636084 +v -1.481043 0.173931 0.623587 +v -1.361925 0.173931 0.623587 +v -1.242805 0.173931 0.623587 +v -1.123686 0.173931 0.623587 +v -1.004568 0.173931 0.623587 +v -0.885449 0.173931 0.623587 +v -0.766329 0.204100 0.636083 +v -1.600163 0.216671 0.594642 +v -1.481043 0.184644 0.588271 +v -1.361925 0.184644 0.588271 +v -1.242805 0.184644 0.588271 +v -1.123686 0.184644 0.588271 +v -1.004568 0.184644 0.588271 +v -0.885449 0.184644 0.588271 +v -0.766329 0.216671 0.594641 +v -1.064126 0.231022 0.551543 +v -1.064126 0.000002 0.320523 +v -1.064127 0.226583 0.506473 +v -1.064127 0.213436 0.463136 +v -1.064127 0.192088 0.423195 +v -1.064127 -0.045068 0.324962 +v -1.064127 0.163357 0.388187 +v -1.064127 -0.088406 0.338108 +v -1.064127 0.128349 0.359457 +v -1.064127 -0.128347 0.359457 +v -1.064127 0.088409 0.338108 +v -1.064127 -0.163355 0.388187 +v -1.064127 0.045071 0.324962 +v -1.064127 -0.192085 0.423195 +v -1.064127 -0.213433 0.463136 +v -1.064127 -0.226580 0.506474 +v -1.064127 -0.231019 0.551543 +v -1.064127 -0.226580 0.596613 +v -1.064127 -0.213433 0.639951 +v -1.064127 -0.192085 0.679891 +v -1.064127 -0.163355 0.714899 +v -1.064127 -0.128347 0.743630 +v -1.064127 -0.088406 0.764978 +v -1.064127 -0.045068 0.778125 +v -1.064127 0.000002 0.782564 +v -1.064127 0.045071 0.778125 +v -1.064127 0.088409 0.764978 +v -1.064127 0.128350 0.743630 +v -1.064127 0.163358 0.714899 +v -1.064127 0.192088 0.679891 +v -1.064127 0.213437 0.639951 +v -1.064127 0.226583 0.596613 +v -1.302365 0.231022 0.551543 +v -1.302365 0.000001 0.320523 +v -1.302365 0.226583 0.506473 +v -1.302365 0.213436 0.463136 +v -1.302365 0.192088 0.423195 +v -1.302365 -0.045068 0.324962 +v -1.302365 0.163357 0.388187 +v -1.302365 -0.088406 0.338108 +v -1.302365 0.128349 0.359457 +v -1.302365 -0.128347 0.359457 +v -1.302365 0.088409 0.338108 +v -1.302365 -0.163355 0.388187 +v -1.302365 0.045071 0.324962 +v -1.302365 -0.192085 0.423195 +v -1.302365 -0.213434 0.463136 +v -1.302365 -0.226580 0.506474 +v -1.302365 -0.231019 0.551543 +v -1.302365 -0.226580 0.596613 +v -1.302365 -0.213434 0.639951 +v -1.302365 -0.192085 0.679891 +v -1.302365 -0.163355 0.714899 +v -1.302365 -0.128347 0.743630 +v -1.302365 -0.088406 0.764978 +v -1.302365 -0.045068 0.778125 +v -1.302365 0.000002 0.782564 +v -1.302365 0.045071 0.778125 +v -1.302365 0.088409 0.764978 +v -1.302365 0.128350 0.743630 +v -1.302365 0.163358 0.714899 +v -1.302365 0.192088 0.679891 +v -1.302365 0.213437 0.639951 +v -1.302365 0.226583 0.596613 +v 3.396374 0.000002 0.431068 +v 3.396374 -0.023501 0.433383 +v 3.396374 -0.046101 0.440238 +v 3.396374 -0.066930 0.451371 +v 3.396374 -0.085186 0.466354 +v 3.396374 -0.100169 0.484610 +v 3.396374 -0.111302 0.505439 +v 3.396374 -0.118158 0.528039 +v 3.396374 -0.120473 0.551543 +v 3.396374 -0.118158 0.575046 +v 3.396374 -0.111302 0.597647 +v 3.396374 -0.100169 0.618475 +v 3.396374 -0.085186 0.636732 +v 3.396374 -0.066930 0.651714 +v 3.396374 -0.046101 0.662847 +v 3.396374 -0.023501 0.669703 +v 3.396374 0.000003 0.672018 +v 3.396374 0.023506 0.669703 +v 3.396374 0.046106 0.662847 +v 3.396374 0.066935 0.651714 +v 3.396374 0.085191 0.636731 +v 3.396374 0.100174 0.618475 +v 3.396374 0.111307 0.597646 +v 3.396374 0.118163 0.575046 +v 3.396374 0.120478 0.551543 +v 3.396374 0.118163 0.528039 +v 3.396374 0.111307 0.505439 +v 3.396374 0.100174 0.484610 +v 3.396374 0.085191 0.466354 +v 3.396374 0.066935 0.451371 +v 3.396374 0.046106 0.440238 +v 3.396374 0.023506 0.433383 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.670595 0.000001 0.551542 +v 5.072026 0.050647 0.530565 +v 5.072026 0.053766 0.540848 +v 5.072026 -0.030453 0.597121 +v 5.072026 -0.038760 0.590304 +v 5.072026 0.045581 0.521087 +v 5.072026 -0.020976 0.602187 +v 5.072026 -0.010692 0.497778 +v 5.072026 0.000002 0.496725 +v 5.072026 0.038764 0.512781 +v 5.072026 -0.010692 0.605307 +v 5.072026 -0.020976 0.500898 +v 5.072026 0.030457 0.505963 +v 5.072026 0.000002 0.606360 +v 5.072026 -0.030453 0.505963 +v 5.072026 0.020980 0.500898 +v 5.072026 0.010696 0.605307 +v 5.072026 -0.038760 0.512781 +v 5.072026 0.010696 0.497778 +v 5.072026 0.020980 0.602187 +v 5.072026 -0.045577 0.521088 +v 5.072026 0.030457 0.597121 +v 5.072026 -0.050643 0.530565 +v 5.072026 0.038764 0.590304 +v 5.072026 -0.053762 0.540848 +v 5.072026 0.045581 0.581997 +v 5.072026 -0.054815 0.551542 +v 5.072026 0.050647 0.572520 +v 5.072026 -0.053762 0.562237 +v 5.072026 0.053766 0.562237 +v 5.072026 -0.050643 0.572520 +v 5.072026 0.054819 0.551542 +v 5.072026 -0.045577 0.581997 +v 5.201908 0.076179 0.519988 +v 5.201908 -0.045808 0.620101 +v 5.201908 0.068560 0.505733 +v 5.201908 -0.031552 0.627720 +v 5.201908 -0.016084 0.470672 +v 5.201908 0.058305 0.493238 +v 5.201908 -0.016084 0.632412 +v 5.201908 -0.031552 0.475365 +v 5.201908 0.045811 0.482984 +v 5.201908 0.000002 0.633997 +v 5.201908 -0.045808 0.482984 +v 5.201908 0.031555 0.475365 +v 5.201908 0.016088 0.632412 +v 5.201908 -0.058302 0.493238 +v 5.201908 0.016087 0.470672 +v 5.201908 0.031555 0.627720 +v 5.201908 -0.068557 0.505733 +v 5.201908 0.045811 0.620101 +v 5.201908 -0.076176 0.519989 +v 5.201908 0.058306 0.609846 +v 5.201908 -0.080868 0.535456 +v 5.201908 0.068560 0.597351 +v 5.201908 -0.082453 0.551542 +v 5.201908 0.076179 0.583096 +v 5.201908 -0.080868 0.567628 +v 5.201908 0.080872 0.567628 +v 5.201908 -0.076176 0.583096 +v 5.201908 0.082456 0.551542 +v 5.201908 -0.068557 0.597352 +v 5.201908 0.080871 0.535456 +v 5.201908 -0.058302 0.609846 +v 5.201908 0.000002 0.469088 +v 3.268884 0.184185 0.514906 +v 3.268884 0.187794 0.551543 +v 3.268884 -0.132785 0.684331 +v 3.268884 -0.156140 0.655874 +v 3.268884 0.173499 0.479678 +v 3.268884 -0.104328 0.707685 +v 3.268884 0.156145 0.447212 +v 3.268884 -0.071862 0.725039 +v 3.268884 -0.036633 0.367360 +v 3.268884 0.000003 0.363752 +v 3.268884 0.132791 0.418754 +v 3.268884 -0.036633 0.735725 +v 3.268884 -0.071862 0.378047 +v 3.268884 0.104334 0.395400 +v 3.268884 0.000003 0.739334 +v 3.268884 -0.104328 0.395400 +v 3.268884 0.071867 0.378047 +v 3.268884 0.036639 0.735725 +v 3.268884 -0.132785 0.418755 +v 3.268884 0.036639 0.367360 +v 3.268884 0.071867 0.725039 +v 3.268884 -0.156140 0.447212 +v 3.268884 0.104334 0.707685 +v 3.268884 -0.173493 0.479678 +v 3.268884 0.132791 0.684331 +v 3.268884 -0.184180 0.514907 +v 3.268884 0.156145 0.655874 +v 3.268884 -0.187788 0.551543 +v 3.268884 0.173499 0.623407 +v 3.268884 -0.184180 0.588179 +v 3.268884 0.184185 0.588179 +v 3.268884 -0.173493 0.623407 +v 3.992743 0.083075 0.535018 +v 3.992743 -0.059890 0.611435 +v 3.992743 0.000002 0.466843 +v 3.992743 0.078255 0.519129 +v 3.992743 -0.047055 0.621968 +v 3.992743 0.070428 0.504486 +v 3.992743 -0.032411 0.629795 +v 3.992743 -0.016522 0.468470 +v 3.992743 0.059894 0.491651 +v 3.992743 -0.016522 0.634615 +v 3.992743 -0.032411 0.473290 +v 3.992743 0.047059 0.481117 +v 3.992743 0.000002 0.636243 +v 3.992743 -0.047055 0.481117 +v 3.992743 0.032415 0.473290 +v 3.992743 0.016526 0.634615 +v 3.992743 -0.059890 0.491651 +v 3.992743 0.016526 0.468470 +v 3.992743 0.032416 0.629795 +v 3.992743 -0.070423 0.504486 +v 3.992743 0.047059 0.621968 +v 3.992743 -0.078250 0.519129 +v 3.992743 0.059894 0.611435 +v 3.992743 -0.083070 0.535018 +v 3.992743 0.070428 0.598599 +v 3.992743 -0.084698 0.551543 +v 3.992743 0.078255 0.583956 +v 3.992743 -0.083070 0.568067 +v 3.992743 0.083075 0.568067 +v 3.992743 -0.078250 0.583956 +v 3.992743 0.084702 0.551543 +v 3.992743 -0.070423 0.598599 +v 4.797544 0.053151 0.529527 +v 4.797544 -0.031959 0.599375 +v 4.797544 0.047835 0.519582 +v 4.797544 -0.022013 0.604691 +v 4.797544 -0.011221 0.495120 +v 4.797544 0.040680 0.510864 +v 4.797544 -0.011221 0.607965 +v 4.797544 -0.022013 0.498394 +v 4.797544 0.031963 0.503710 +v 4.797544 0.000002 0.609070 +v 4.797544 -0.031959 0.503710 +v 4.797544 0.022017 0.498394 +v 4.797544 0.011225 0.607965 +v 4.797544 -0.040676 0.510864 +v 4.797544 0.011225 0.495120 +v 4.797544 0.022017 0.604691 +v 4.797544 -0.047831 0.519582 +v 4.797544 0.031963 0.599375 +v 4.797544 -0.053147 0.529528 +v 4.797544 0.040680 0.592221 +v 4.797544 -0.056421 0.540319 +v 4.797544 0.047835 0.583503 +v 4.797544 -0.057526 0.551543 +v 4.797544 0.053151 0.573557 +v 4.797544 -0.056421 0.562766 +v 4.797544 0.056425 0.562766 +v 4.797544 -0.053147 0.573557 +v 4.797544 0.057530 0.551542 +v 4.797544 -0.047831 0.583503 +v 4.797544 0.056425 0.540319 +v 4.797544 -0.040676 0.592221 +v 4.797544 0.000002 0.494015 +v 4.684866 0.100623 0.531528 +v 4.640315 0.125171 0.526645 +v 4.595768 0.100623 0.531528 +v 4.551219 0.125171 0.526645 +v 4.506669 0.100623 0.531528 +v 4.461956 0.124635 0.527181 +v 4.417573 0.100623 0.531528 +v 4.373023 0.125171 0.526645 +v 4.328474 0.100623 0.531528 +v 4.283925 0.125171 0.526645 +v 4.239376 0.100623 0.531528 +v 4.194828 0.079277 0.535774 +v 4.684866 -0.072542 0.624086 +v 4.640315 -0.090240 0.641784 +v 4.595768 -0.072542 0.624086 +v 4.551219 -0.090240 0.641784 +v 4.506669 -0.072542 0.624086 +v 4.461956 -0.090776 0.642321 +v 4.417573 -0.072542 0.624086 +v 4.373023 -0.090240 0.641784 +v 4.328474 -0.072542 0.624086 +v 4.283925 -0.090240 0.641784 +v 4.239376 -0.072541 0.624086 +v 4.194828 -0.057152 0.608697 +v 4.684866 0.000002 0.448950 +v 4.640315 0.000002 0.423921 +v 4.595768 0.000002 0.448950 +v 4.551219 0.000002 0.423921 +v 4.506669 0.000002 0.448950 +v 4.461956 -0.000534 0.424458 +v 4.417573 0.000002 0.448950 +v 4.373023 0.000002 0.423921 +v 4.328474 0.000002 0.448950 +v 4.283925 0.000002 0.423921 +v 4.239376 0.000002 0.448950 +v 4.194828 0.000002 0.470714 +v 4.194828 0.074678 0.520611 +v 4.239376 0.094785 0.512282 +v 4.283925 0.117909 0.502704 +v 4.328474 0.094785 0.512282 +v 4.373023 0.117909 0.502704 +v 4.417573 0.094785 0.512282 +v 4.461957 0.117372 0.503240 +v 4.506669 0.094785 0.512282 +v 4.551219 0.117909 0.502704 +v 4.595768 0.094785 0.512282 +v 4.640318 0.117909 0.502704 +v 4.684866 0.094785 0.512282 +v 4.194828 -0.044904 0.618749 +v 4.239376 -0.056995 0.636845 +v 4.283925 -0.070900 0.657656 +v 4.328474 -0.056995 0.636845 +v 4.373023 -0.070900 0.657656 +v 4.417573 -0.056995 0.636845 +v 4.461957 -0.071437 0.658192 +v 4.506669 -0.056995 0.636845 +v 4.551219 -0.070900 0.657656 +v 4.595768 -0.056995 0.636845 +v 4.640318 -0.070900 0.657656 +v 4.684866 -0.056995 0.636845 +v 4.194828 0.067208 0.506637 +v 4.239376 0.085304 0.494545 +v 4.283925 0.106115 0.480640 +v 4.328474 0.085304 0.494545 +v 4.373023 0.106115 0.480640 +v 4.417573 0.085304 0.494545 +v 4.461957 0.105579 0.481176 +v 4.506669 0.085304 0.494545 +v 4.551219 0.106115 0.480640 +v 4.595768 0.085304 0.494545 +v 4.640318 0.106115 0.480640 +v 4.684866 0.085304 0.494545 +v 4.194828 -0.030929 0.626218 +v 4.239376 -0.039258 0.646325 +v 4.283925 -0.048836 0.669449 +v 4.328474 -0.039258 0.646325 +v 4.373023 -0.048836 0.669449 +v 4.417573 -0.039258 0.646325 +v 4.461957 -0.049373 0.669985 +v 4.506669 -0.039258 0.646325 +v 4.551219 -0.048836 0.669449 +v 4.595768 -0.039258 0.646325 +v 4.640318 -0.048836 0.669449 +v 4.684866 -0.039258 0.646325 +v 4.194828 -0.015767 0.472267 +v 4.239376 -0.020013 0.450922 +v 4.283925 -0.024895 0.426374 +v 4.328474 -0.020013 0.450922 +v 4.373023 -0.024896 0.426374 +v 4.417573 -0.020013 0.450922 +v 4.461957 -0.025432 0.426910 +v 4.506669 -0.020013 0.450922 +v 4.551219 -0.024896 0.426374 +v 4.595768 -0.020013 0.450922 +v 4.640318 -0.024896 0.426374 +v 4.684866 -0.020013 0.450922 +v 4.194828 0.057156 0.494388 +v 4.239376 0.072546 0.478999 +v 4.283925 0.090244 0.461301 +v 4.328474 0.072546 0.478999 +v 4.373023 0.090244 0.461301 +v 4.417573 0.072546 0.478999 +v 4.461957 0.089707 0.461837 +v 4.507077 0.073144 0.479622 +v 4.551219 0.090244 0.461301 +v 4.595768 0.072546 0.478999 +v 4.640318 0.090244 0.461301 +v 4.684866 0.072546 0.478999 +v 4.194828 -0.015767 0.630818 +v 4.239376 -0.020013 0.652164 +v 4.283925 -0.024895 0.676711 +v 4.328474 -0.020013 0.652164 +v 4.373023 -0.024895 0.676711 +v 4.417573 -0.020013 0.652164 +v 4.461957 -0.025432 0.677248 +v 4.506669 -0.020013 0.652164 +v 4.551219 -0.024896 0.676711 +v 4.595768 -0.020013 0.652164 +v 4.640318 -0.024896 0.676711 +v 4.684866 -0.020013 0.652164 +v 4.194828 -0.030930 0.476867 +v 4.239376 -0.039258 0.456760 +v 4.283925 -0.048836 0.433636 +v 4.328474 -0.039258 0.456760 +v 4.373023 -0.048836 0.433636 +v 4.417573 -0.039258 0.456760 +v 4.461957 -0.049373 0.434172 +v 4.506669 -0.039258 0.456760 +v 4.551219 -0.048836 0.433636 +v 4.595768 -0.039258 0.456760 +v 4.640318 -0.048836 0.433636 +v 4.684866 -0.039258 0.456760 +v 4.194828 0.044908 0.484336 +v 4.239376 0.056999 0.466240 +v 4.283925 0.070905 0.445429 +v 4.328474 0.056999 0.466240 +v 4.373023 0.070904 0.445429 +v 4.417573 0.056999 0.466240 +v 4.461957 0.070368 0.445966 +v 4.506669 0.056999 0.466240 +v 4.551219 0.070904 0.445429 +v 4.595768 0.056999 0.466240 +v 4.640318 0.070904 0.445429 +v 4.684866 0.056999 0.466240 +v 4.194828 0.000002 0.632371 +v 4.239376 0.000002 0.654135 +v 4.283925 0.000002 0.679164 +v 4.328474 0.000002 0.654135 +v 4.373023 0.000002 0.679164 +v 4.417573 0.000002 0.654135 +v 4.461957 -0.000534 0.679700 +v 4.506669 0.000002 0.654135 +v 4.551219 0.000002 0.679164 +v 4.595768 0.000002 0.654135 +v 4.640318 0.000002 0.679164 +v 4.684866 0.000002 0.654135 +v 4.194828 -0.044904 0.484336 +v 4.239376 -0.056995 0.466240 +v 4.283925 -0.070900 0.445430 +v 4.328474 -0.056995 0.466240 +v 4.373023 -0.070900 0.445430 +v 4.417573 -0.056995 0.466240 +v 4.461957 -0.071437 0.445966 +v 4.506669 -0.056995 0.466240 +v 4.551219 -0.070900 0.445430 +v 4.595768 -0.056995 0.466240 +v 4.640318 -0.070900 0.445429 +v 4.684866 -0.056995 0.466240 +v 4.194828 0.030934 0.476867 +v 4.239376 0.039262 0.456760 +v 4.283925 0.048840 0.433636 +v 4.328474 0.039262 0.456760 +v 4.373023 0.048840 0.433636 +v 4.417573 0.039262 0.456760 +v 4.461957 0.048304 0.434172 +v 4.506669 0.039262 0.456760 +v 4.551219 0.048840 0.433636 +v 4.595768 0.039262 0.456760 +v 4.640318 0.048840 0.433636 +v 4.684866 0.039262 0.456760 +v 4.194828 0.015771 0.630818 +v 4.239376 0.020017 0.652164 +v 4.283925 0.024900 0.676711 +v 4.328474 0.020017 0.652164 +v 4.373023 0.024900 0.676711 +v 4.417573 0.020017 0.652164 +v 4.461957 0.024364 0.677248 +v 4.506669 0.020017 0.652164 +v 4.551219 0.024900 0.676711 +v 4.595768 0.020017 0.652164 +v 4.640318 0.024900 0.676711 +v 4.684866 0.020017 0.652164 +v 4.194828 -0.057152 0.494388 +v 4.239376 -0.072541 0.478999 +v 4.283925 -0.090240 0.461301 +v 4.328474 -0.072542 0.478999 +v 4.373023 -0.090240 0.461301 +v 4.417573 -0.072542 0.478999 +v 4.461957 -0.090776 0.461837 +v 4.506669 -0.072542 0.478999 +v 4.551219 -0.090240 0.461301 +v 4.595768 -0.072542 0.478999 +v 4.640318 -0.090240 0.461301 +v 4.684866 -0.072542 0.478999 +v 4.194828 0.015771 0.472267 +v 4.239376 0.020017 0.450922 +v 4.283925 0.024900 0.426374 +v 4.328474 0.020017 0.450922 +v 4.373023 0.024900 0.426374 +v 4.417573 0.020017 0.450922 +v 4.461957 0.024363 0.426910 +v 4.506669 0.020017 0.450922 +v 4.551219 0.024900 0.426374 +v 4.595768 0.020017 0.450922 +v 4.640318 0.024900 0.426374 +v 4.684866 0.020017 0.450922 +v 4.194828 0.030934 0.626218 +v 4.239376 0.039263 0.646325 +v 4.283925 0.048841 0.669449 +v 4.328474 0.039263 0.646325 +v 4.373023 0.048841 0.669449 +v 4.417573 0.039263 0.646325 +v 4.461957 0.048304 0.669985 +v 4.506669 0.039263 0.646325 +v 4.551219 0.048841 0.669449 +v 4.595768 0.039262 0.646325 +v 4.640318 0.048841 0.669449 +v 4.684866 0.039262 0.646325 +v 4.194828 -0.067204 0.506637 +v 4.239376 -0.085300 0.494545 +v 4.283925 -0.106111 0.480640 +v 4.328474 -0.085300 0.494545 +v 4.373023 -0.106111 0.480640 +v 4.417573 -0.085300 0.494545 +v 4.461957 -0.106647 0.481176 +v 4.506669 -0.085300 0.494545 +v 4.551219 -0.106111 0.480640 +v 4.595768 -0.085300 0.494545 +v 4.640318 -0.106111 0.480640 +v 4.684866 -0.085300 0.494545 +v 4.194828 0.044908 0.618749 +v 4.239376 0.056999 0.636845 +v 4.283925 0.070905 0.657656 +v 4.328474 0.056999 0.636845 +v 4.373023 0.070905 0.657656 +v 4.417573 0.056999 0.636845 +v 4.461957 0.070368 0.658192 +v 4.506669 0.056999 0.636845 +v 4.551219 0.070905 0.657656 +v 4.595768 0.056999 0.636845 +v 4.640318 0.070905 0.657656 +v 4.684866 0.056999 0.636845 +v 4.194828 -0.074674 0.520611 +v 4.239376 -0.094781 0.512282 +v 4.283925 -0.117904 0.502704 +v 4.328474 -0.094781 0.512282 +v 4.373023 -0.117904 0.502704 +v 4.417573 -0.094781 0.512282 +v 4.461957 -0.118441 0.503240 +v 4.506669 -0.094781 0.512282 +v 4.551219 -0.117904 0.502704 +v 4.595768 -0.094781 0.512282 +v 4.640318 -0.117904 0.502704 +v 4.684866 -0.094781 0.512282 +v 4.194828 0.057157 0.608697 +v 4.239376 0.072546 0.624086 +v 4.283925 0.090244 0.641784 +v 4.328474 0.072546 0.624086 +v 4.373023 0.090244 0.641784 +v 4.417573 0.072546 0.624086 +v 4.461957 0.089708 0.642321 +v 4.506669 0.072546 0.624086 +v 4.551219 0.090244 0.641784 +v 4.595768 0.072546 0.624086 +v 4.640318 0.090244 0.641784 +v 4.684866 0.072546 0.624086 +v 4.194828 -0.079273 0.535774 +v 4.239376 -0.100619 0.531528 +v 4.283925 -0.125167 0.526645 +v 4.328474 -0.100619 0.531528 +v 4.373023 -0.125167 0.526645 +v 4.417573 -0.100619 0.531528 +v 4.461957 -0.125703 0.527181 +v 4.506669 -0.100619 0.531528 +v 4.551219 -0.125167 0.526645 +v 4.595768 -0.100619 0.531528 +v 4.640318 -0.125167 0.526645 +v 4.684866 -0.100619 0.531528 +v 4.194828 0.067209 0.596448 +v 4.239376 0.085305 0.608540 +v 4.283925 0.106115 0.622445 +v 4.328474 0.085305 0.608540 +v 4.373023 0.106115 0.622445 +v 4.417573 0.085304 0.608540 +v 4.461957 0.105579 0.622981 +v 4.506669 0.085304 0.608540 +v 4.551219 0.106115 0.622445 +v 4.595768 0.085304 0.608540 +v 4.640318 0.106115 0.622445 +v 4.684866 0.085304 0.608540 +v 4.194828 -0.080826 0.551543 +v 4.239376 -0.102590 0.551543 +v 4.283925 -0.127619 0.551543 +v 4.328474 -0.102590 0.551543 +v 4.373023 -0.127619 0.551543 +v 4.417573 -0.102590 0.551543 +v 4.461957 -0.128155 0.552079 +v 4.506669 -0.102590 0.551543 +v 4.551219 -0.127619 0.551543 +v 4.595768 -0.102590 0.551543 +v 4.640318 -0.127619 0.551543 +v 4.684866 -0.102590 0.551543 +v 4.194828 0.074678 0.582474 +v 4.239376 0.094785 0.590803 +v 4.283925 0.117909 0.600381 +v 4.328474 0.094785 0.590803 +v 4.373023 0.117909 0.600381 +v 4.417573 0.094785 0.590803 +v 4.461957 0.117372 0.600917 +v 4.506669 0.094785 0.590803 +v 4.551219 0.117909 0.600381 +v 4.595768 0.094785 0.590803 +v 4.640318 0.117909 0.600381 +v 4.684866 0.094785 0.590803 +v 4.194828 -0.079273 0.567311 +v 4.239376 -0.100619 0.571557 +v 4.283925 -0.125167 0.576440 +v 4.328474 -0.100619 0.571557 +v 4.373023 -0.125167 0.576440 +v 4.417573 -0.100619 0.571557 +v 4.461957 -0.125703 0.576977 +v 4.506669 -0.100619 0.571557 +v 4.551219 -0.125167 0.576440 +v 4.595768 -0.100619 0.571557 +v 4.640318 -0.125167 0.576440 +v 4.684866 -0.100619 0.571557 +v 4.194828 0.079278 0.567311 +v 4.239376 0.100623 0.571557 +v 4.283925 0.125171 0.576440 +v 4.328474 0.100623 0.571557 +v 4.373023 0.125171 0.576440 +v 4.417573 0.100623 0.571557 +v 4.461957 0.124635 0.576976 +v 4.506669 0.100623 0.571557 +v 4.551219 0.125171 0.576440 +v 4.595768 0.100623 0.571557 +v 4.640318 0.125171 0.576440 +v 4.684866 0.100623 0.571557 +v 4.194828 -0.074674 0.582474 +v 4.239376 -0.094781 0.590803 +v 4.283925 -0.117904 0.600381 +v 4.328474 -0.094781 0.590803 +v 4.373023 -0.117904 0.600381 +v 4.417573 -0.094781 0.590803 +v 4.461957 -0.118441 0.600917 +v 4.506669 -0.094781 0.590803 +v 4.551219 -0.117904 0.600381 +v 4.595768 -0.094781 0.590803 +v 4.640318 -0.117904 0.600381 +v 4.684866 -0.094781 0.590803 +v 4.194828 0.080831 0.551543 +v 4.239376 0.102594 0.551543 +v 4.283925 0.127623 0.551542 +v 4.328474 0.102594 0.551542 +v 4.373023 0.127623 0.551542 +v 4.417573 0.102594 0.551542 +v 4.461957 0.127087 0.552079 +v 4.506669 0.102594 0.551542 +v 4.551219 0.127623 0.551542 +v 4.595768 0.102594 0.551542 +v 4.640318 0.127623 0.551542 +v 4.684866 0.102594 0.551542 +v 4.194828 -0.067204 0.596448 +v 4.239376 -0.085300 0.608540 +v 4.283925 -0.106111 0.622445 +v 4.328474 -0.085300 0.608540 +v 4.373023 -0.106111 0.622445 +v 4.417573 -0.085300 0.608540 +v 4.461957 -0.106647 0.622981 +v 4.506669 -0.085300 0.608540 +v 4.551219 -0.106111 0.622445 +v 4.595768 -0.085300 0.608540 +v 4.640318 -0.106111 0.622445 +v 4.684866 -0.085300 0.608540 +v 3.587242 -0.000000 -0.145895 +v 3.989225 0.000000 -0.186209 +v 3.587242 -0.021885 -0.143739 +v 3.989225 -0.014454 -0.184785 +v 3.587242 -0.042928 -0.137356 +v 3.989225 -0.028353 -0.180569 +v 3.587242 -0.062322 -0.126990 +v 3.989225 -0.041162 -0.173722 +v 3.587242 -0.079321 -0.113039 +v 3.989225 -0.052389 -0.164508 +v 3.587242 -0.093272 -0.096040 +v 3.989225 -0.061603 -0.153281 +v 3.587242 -0.103638 -0.076646 +v 3.989225 -0.068449 -0.140472 +v 3.587242 -0.110022 -0.055603 +v 3.989225 -0.072665 -0.126574 +v 3.587242 -0.112177 -0.033718 +v 3.989225 -0.074089 -0.112120 +v 3.587242 -0.110022 -0.011833 +v 3.989225 -0.072665 -0.097666 +v 3.587242 -0.103638 0.009210 +v 3.989225 -0.068449 -0.083767 +v 3.587242 -0.093272 0.028604 +v 3.989225 -0.061603 -0.070958 +v 3.587242 -0.079321 0.045603 +v 3.989225 -0.052389 -0.059731 +v 3.587242 -0.062322 0.059554 +v 3.989225 -0.041162 -0.050517 +v 3.587242 -0.042928 0.069920 +v 3.989225 -0.028353 -0.043670 +v 3.587242 -0.021885 0.076304 +v 3.989225 -0.014454 -0.039454 +v 3.587242 0.000000 0.078459 +v 3.989225 0.000000 -0.038031 +v 3.587242 0.021885 0.076304 +v 3.989225 0.014454 -0.039454 +v 3.587242 0.042928 0.069920 +v 3.989225 0.028353 -0.043670 +v 3.587242 0.062322 0.059554 +v 3.989225 0.041162 -0.050517 +v 3.587242 0.079321 0.045603 +v 3.989225 0.052389 -0.059731 +v 3.587242 0.093272 0.028604 +v 3.989225 0.061603 -0.070958 +v 3.587242 0.103638 0.009210 +v 3.989225 0.068449 -0.083767 +v 3.587242 0.110022 -0.011833 +v 3.989225 0.072665 -0.097666 +v 3.587242 0.112177 -0.033718 +v 3.989225 0.074089 -0.112120 +v 3.587242 0.110022 -0.055603 +v 3.989225 0.072665 -0.126574 +v 3.587242 0.103638 -0.076646 +v 3.989225 0.068449 -0.140472 +v 3.587242 0.093272 -0.096040 +v 3.989225 0.061603 -0.153281 +v 3.587242 0.079321 -0.113039 +v 3.989225 0.052389 -0.164508 +v 3.587242 0.062322 -0.126990 +v 3.989225 0.041162 -0.173722 +v 3.587242 0.042928 -0.137356 +v 3.989225 0.028353 -0.180569 +v 3.587242 0.021884 -0.143740 +v 3.989225 0.014454 -0.184785 +v 4.637677 -0.014454 -0.106383 +v 4.637677 0.000000 -0.107807 +v 4.637677 -0.028353 -0.102167 +v 4.637677 -0.041162 -0.095321 +v 4.637677 -0.052389 -0.086107 +v 4.637677 -0.061603 -0.074880 +v 4.637677 -0.068449 -0.062070 +v 4.637677 -0.072665 -0.048172 +v 4.637677 -0.074089 -0.033718 +v 4.637677 -0.072665 -0.019264 +v 4.637677 -0.068449 -0.005365 +v 4.637677 -0.061603 0.007444 +v 4.637677 -0.052389 0.018671 +v 4.637677 -0.041162 0.027885 +v 4.637677 -0.028353 0.034731 +v 4.637677 -0.014454 0.038948 +v 4.637677 0.000000 0.040371 +v 4.637677 0.014454 0.038948 +v 4.637677 0.028353 0.034731 +v 4.637677 0.041162 0.027885 +v 4.637677 0.052389 0.018671 +v 4.637677 0.061603 0.007444 +v 4.637677 0.068449 -0.005365 +v 4.637677 0.072665 -0.019264 +v 4.637677 0.074089 -0.033718 +v 4.637677 0.072665 -0.048172 +v 4.637677 0.068449 -0.062071 +v 4.637677 0.061603 -0.074880 +v 4.637677 0.052389 -0.086107 +v 4.637677 0.041162 -0.095321 +v 4.637677 0.028353 -0.102167 +v 4.637677 0.014454 -0.106383 +v 5.273666 0.000001 -0.033718 +v 3.179720 -0.053726 0.036675 +v 3.188101 -0.077999 0.043213 +v 3.199381 -0.099273 0.052010 +v 3.213126 -0.116733 0.062730 +v 3.228806 -0.129707 0.074960 +v 3.245822 -0.137696 0.088231 +v 3.263516 -0.140394 0.102031 +v 3.281211 -0.137696 0.115832 +v 3.298226 -0.129707 0.129103 +v 3.313907 -0.116733 0.141333 +v 3.327652 -0.099273 0.152053 +v 3.338932 -0.077998 0.160850 +v 3.347313 -0.053726 0.167388 +v 3.352474 -0.027389 0.171413 +v 3.354218 0.000000 0.172772 +v 3.352474 0.027389 0.171413 +v 3.347313 0.053726 0.167388 +v 3.338932 0.077999 0.160850 +v 3.327652 0.099273 0.152053 +v 3.313908 0.116733 0.141333 +v 3.298226 0.129707 0.129103 +v 3.281211 0.137696 0.115832 +v 3.263516 0.140394 0.102031 +v 3.245822 0.137696 0.088231 +v 3.228806 0.129707 0.074960 +v 3.213126 0.116733 0.062730 +v 3.199381 0.099273 0.052010 +v 3.188101 0.077998 0.043212 +v 3.179720 0.053726 0.036675 +v 3.174559 0.027389 0.032650 +v 3.172815 0.000000 0.031291 +v 3.587242 -0.000000 -0.145895 +v 3.587242 -0.021885 -0.143739 +v 3.587242 -0.042928 -0.137356 +v 3.587242 -0.062322 -0.126990 +v 3.587242 -0.079321 -0.113039 +v 3.587242 -0.093272 -0.096040 +v 3.587242 -0.103638 -0.076646 +v 3.587242 -0.110022 -0.055603 +v 3.587242 -0.112177 -0.033718 +v 3.587242 -0.110022 -0.011833 +v 3.587242 -0.103638 0.009210 +v 3.587242 -0.093272 0.028604 +v 3.587242 -0.079321 0.045603 +v 3.587242 -0.062322 0.059554 +v 3.587242 -0.042928 0.069920 +v 3.587242 -0.021885 0.076304 +v 3.587242 0.000000 0.078459 +v 3.587242 0.021885 0.076304 +v 3.587242 0.042928 0.069920 +v 3.587242 0.062322 0.059554 +v 3.587242 0.079321 0.045603 +v 3.587242 0.093272 0.028604 +v 3.587242 0.103638 0.009210 +v 3.587242 0.110022 -0.011833 +v 3.587242 0.112177 -0.033718 +v 3.587242 0.110022 -0.055603 +v 3.587242 0.103638 -0.076646 +v 3.587242 0.093272 -0.096040 +v 3.587242 0.079321 -0.113039 +v 3.587242 0.062322 -0.126990 +v 3.587242 0.042928 -0.137356 +v 3.587242 0.021884 -0.143740 +v 2.943389 0.000000 0.479873 +v 2.946735 -0.033974 0.479873 +v 2.956646 -0.066643 0.479873 +v 2.972738 -0.096750 0.479873 +v 2.994395 -0.123139 0.479873 +v 3.020784 -0.144796 0.479873 +v 3.050892 -0.160889 0.479873 +v 3.083561 -0.170799 0.479873 +v 3.117535 -0.174145 0.479873 +v 3.151508 -0.170799 0.479873 +v 3.184176 -0.160889 0.479873 +v 3.214284 -0.144796 0.479873 +v 3.240674 -0.123139 0.479873 +v 3.262331 -0.096750 0.479873 +v 3.278424 -0.066642 0.479873 +v 3.288334 -0.033974 0.479873 +v 3.291680 0.000000 0.479873 +v 3.288334 0.033974 0.479873 +v 3.278424 0.066643 0.479873 +v 3.262331 0.096750 0.479873 +v 3.240674 0.123139 0.479873 +v 3.214284 0.144797 0.479873 +v 3.184176 0.160889 0.479873 +v 3.151508 0.170799 0.479873 +v 3.117535 0.174145 0.479873 +v 3.083561 0.170799 0.479873 +v 3.050892 0.160889 0.479873 +v 3.020784 0.144796 0.479873 +v 2.994395 0.123139 0.479873 +v 2.972738 0.096750 0.479873 +v 2.956646 0.066642 0.479873 +v 2.946735 0.033974 0.479873 +v 3.368539 -0.000000 -0.102855 +v 3.048191 0.000000 0.184855 +v 3.050586 0.034861 0.185759 +v 3.369501 0.021297 -0.100929 +v 3.057676 0.068383 0.188436 +v 3.372353 0.041775 -0.095226 +v 3.069191 0.099276 0.192783 +v 3.376984 0.060648 -0.085964 +v 3.084687 0.126355 0.198633 +v 3.383216 0.077190 -0.073499 +v 3.103569 0.148578 0.205762 +v 3.390810 0.090766 -0.058311 +v 3.125113 0.165091 0.213894 +v 3.399475 0.100854 -0.040983 +v 3.148487 0.175260 0.222719 +v 3.408875 0.107066 -0.022181 +v 3.172796 0.178693 0.231897 +v 3.418653 0.109163 -0.002627 +v 3.197106 0.175260 0.241074 +v 3.428429 0.107066 0.016926 +v 3.220482 0.165091 0.249899 +v 3.437830 0.100854 0.035728 +v 3.242024 0.148578 0.258032 +v 3.446494 0.090766 0.053056 +v 3.260906 0.126355 0.265160 +v 3.454088 0.077190 0.068244 +v 3.276403 0.099277 0.271011 +v 3.460320 0.060648 0.080709 +v 3.287918 0.068383 0.275358 +v 3.464952 0.041775 0.089971 +v 3.295009 0.034861 0.278035 +v 3.467803 0.021297 0.095675 +v 3.297402 0.000000 0.278939 +v 3.468766 0.000000 0.097600 +v 3.295009 -0.034861 0.278035 +v 3.467803 -0.021297 0.095675 +v 3.287918 -0.068383 0.275358 +v 3.464952 -0.041775 0.089971 +v 3.276403 -0.099277 0.271011 +v 3.460320 -0.060648 0.080709 +v 3.260906 -0.126355 0.265160 +v 3.454088 -0.077190 0.068244 +v 3.242024 -0.148578 0.258032 +v 3.446494 -0.090766 0.053056 +v 3.220482 -0.165091 0.249899 +v 3.437830 -0.100854 0.035728 +v 3.197106 -0.175260 0.241074 +v 3.428429 -0.107066 0.016926 +v 3.172796 -0.178693 0.231897 +v 3.418653 -0.109163 -0.002627 +v 3.148487 -0.175260 0.222719 +v 3.408875 -0.107066 -0.022181 +v 3.125113 -0.165091 0.213895 +v 3.399475 -0.100854 -0.040983 +v 3.103569 -0.148578 0.205762 +v 3.390810 -0.090766 -0.058311 +v 3.084687 -0.126355 0.198633 +v 3.383216 -0.077190 -0.073499 +v 3.069191 -0.099277 0.192783 +v 3.376984 -0.060648 -0.085964 +v 3.057676 -0.068383 0.188436 +v 3.372353 -0.041775 -0.095226 +v 3.050586 -0.034861 0.185759 +v 3.369501 -0.021297 -0.100929 +v 3.174559 -0.027389 0.032650 +v 3.023735 0.000000 0.331704 +v 3.026553 0.034417 0.332276 +v 3.034897 0.067512 0.333971 +v 3.048448 0.098013 0.336723 +v 3.066685 0.124747 0.340427 +v 3.088904 0.146687 0.344940 +v 3.114257 0.162990 0.350089 +v 3.141765 0.173029 0.355676 +v 3.170372 0.176419 0.361486 +v 3.198979 0.173029 0.367297 +v 3.226487 0.162990 0.372884 +v 3.251839 0.146687 0.378033 +v 3.274060 0.124747 0.382546 +v 3.292296 0.098013 0.386249 +v 3.305847 0.067513 0.389002 +v 3.314192 0.034418 0.390696 +v 3.317009 0.000000 0.391269 +v 3.314192 -0.034418 0.390696 +v 3.305847 -0.067513 0.389002 +v 3.292296 -0.098013 0.386249 +v 3.274060 -0.124747 0.382546 +v 3.251839 -0.146687 0.378033 +v 3.226487 -0.162990 0.372884 +v 3.198979 -0.173029 0.367297 +v 3.170372 -0.176419 0.361486 +v 3.141765 -0.173029 0.355676 +v 3.114257 -0.162990 0.350089 +v 3.088905 -0.146687 0.344940 +v 3.066685 -0.124747 0.340427 +v 3.048448 -0.098013 0.336723 +v 3.034897 -0.067513 0.333971 +v 3.026553 -0.034418 0.332276 +v 3.587242 -0.000000 1.248980 +v 3.989225 0.000000 1.289294 +v 3.587242 -0.021885 1.246825 +v 3.989225 -0.014454 1.287870 +v 3.587242 -0.042928 1.240441 +v 3.989225 -0.028353 1.283654 +v 3.587242 -0.062322 1.230075 +v 3.989225 -0.041162 1.276808 +v 3.587242 -0.079321 1.216125 +v 3.989225 -0.052389 1.267594 +v 3.587242 -0.093272 1.199126 +v 3.989225 -0.061603 1.256366 +v 3.587242 -0.103638 1.179732 +v 3.989225 -0.068449 1.243557 +v 3.587242 -0.110022 1.158688 +v 3.989225 -0.072665 1.229659 +v 3.587242 -0.112177 1.136803 +v 3.989225 -0.074089 1.215205 +v 3.587242 -0.110022 1.114919 +v 3.989225 -0.072665 1.200751 +v 3.587242 -0.103638 1.093875 +v 3.989225 -0.068449 1.186852 +v 3.587242 -0.093272 1.074481 +v 3.989225 -0.061603 1.174043 +v 3.587242 -0.079321 1.057482 +v 3.989225 -0.052389 1.162816 +v 3.587242 -0.062322 1.043532 +v 3.989225 -0.041162 1.153602 +v 3.587242 -0.042928 1.033165 +v 3.989225 -0.028353 1.146756 +v 3.587242 -0.021885 1.026782 +v 3.989225 -0.014454 1.142540 +v 3.587242 0.000000 1.024626 +v 3.989225 0.000000 1.141116 +v 3.587242 0.021885 1.026782 +v 3.989225 0.014454 1.142540 +v 3.587242 0.042928 1.033165 +v 3.989225 0.028353 1.146756 +v 3.587242 0.062322 1.043532 +v 3.989225 0.041162 1.153602 +v 3.587242 0.079321 1.057482 +v 3.989225 0.052389 1.162816 +v 3.587242 0.093272 1.074481 +v 3.989225 0.061603 1.174043 +v 3.587242 0.103638 1.093875 +v 3.989225 0.068449 1.186852 +v 3.587242 0.110022 1.114919 +v 3.989225 0.072665 1.200751 +v 3.587242 0.112177 1.136803 +v 3.989225 0.074089 1.215205 +v 3.587242 0.110022 1.158688 +v 3.989225 0.072665 1.229659 +v 3.587242 0.103638 1.179732 +v 3.989225 0.068449 1.243558 +v 3.587242 0.093272 1.199126 +v 3.989225 0.061603 1.256367 +v 3.587242 0.079321 1.216125 +v 3.989225 0.052389 1.267594 +v 3.587242 0.062322 1.230075 +v 3.989225 0.041162 1.276808 +v 3.587242 0.042928 1.240442 +v 3.989225 0.028353 1.283654 +v 3.587242 0.021884 1.246825 +v 3.989225 0.014454 1.287870 +v 4.637677 -0.014454 1.209468 +v 4.637677 0.000000 1.210892 +v 4.637677 -0.028353 1.205252 +v 4.637677 -0.041162 1.198406 +v 4.637677 -0.052389 1.189192 +v 4.637677 -0.061603 1.177965 +v 4.637677 -0.068449 1.165156 +v 4.637677 -0.072665 1.151257 +v 4.637677 -0.074089 1.136803 +v 4.637677 -0.072665 1.122349 +v 4.637677 -0.068449 1.108450 +v 4.637677 -0.061603 1.095641 +v 4.637677 -0.052389 1.084414 +v 4.637677 -0.041162 1.075200 +v 4.637677 -0.028353 1.068354 +v 4.637677 -0.014454 1.064138 +v 4.637677 0.000000 1.062714 +v 4.637677 0.014454 1.064138 +v 4.637677 0.028353 1.068354 +v 4.637677 0.041162 1.075200 +v 4.637677 0.052389 1.084414 +v 4.637677 0.061603 1.095641 +v 4.637677 0.068449 1.108451 +v 4.637677 0.072665 1.122349 +v 4.637677 0.074089 1.136803 +v 4.637677 0.072665 1.151257 +v 4.637677 0.068449 1.165156 +v 4.637677 0.061603 1.177965 +v 4.637677 0.052389 1.189192 +v 4.637677 0.041162 1.198406 +v 4.637677 0.028353 1.205252 +v 4.637677 0.014454 1.209468 +v 5.273666 0.000001 1.136803 +v 3.179720 -0.053726 1.066410 +v 3.188101 -0.077998 1.059873 +v 3.199381 -0.099273 1.051075 +v 3.213126 -0.116733 1.040356 +v 3.228806 -0.129707 1.028126 +v 3.245822 -0.137696 1.014855 +v 3.263516 -0.140394 1.001054 +v 3.281211 -0.137696 0.987253 +v 3.298226 -0.129707 0.973983 +v 3.313907 -0.116733 0.961753 +v 3.327652 -0.099273 0.951033 +v 3.338932 -0.077998 0.942235 +v 3.347313 -0.053726 0.935698 +v 3.352474 -0.027389 0.931672 +v 3.354218 0.000000 0.930313 +v 3.352474 0.027389 0.931672 +v 3.347313 0.053726 0.935698 +v 3.338932 0.077999 0.942235 +v 3.327652 0.099273 0.951033 +v 3.313907 0.116733 0.961753 +v 3.298226 0.129707 0.973983 +v 3.281211 0.137696 0.987253 +v 3.263516 0.140394 1.001054 +v 3.245822 0.137696 1.014855 +v 3.228806 0.129707 1.028126 +v 3.213125 0.116733 1.040356 +v 3.199381 0.099273 1.051076 +v 3.188101 0.077998 1.059873 +v 3.179720 0.053726 1.066410 +v 3.174559 0.027389 1.070436 +v 3.172815 0.000000 1.071795 +v 3.587242 -0.000000 1.248980 +v 3.587242 -0.021885 1.246825 +v 3.587242 -0.042928 1.240441 +v 3.587242 -0.062322 1.230075 +v 3.587242 -0.079321 1.216125 +v 3.587242 -0.093272 1.199126 +v 3.587242 -0.103638 1.179732 +v 3.587242 -0.110022 1.158688 +v 3.587242 -0.112177 1.136803 +v 3.587242 -0.110022 1.114919 +v 3.587242 -0.103638 1.093875 +v 3.587242 -0.093272 1.074481 +v 3.587242 -0.079321 1.057482 +v 3.587242 -0.062322 1.043532 +v 3.587242 -0.042928 1.033165 +v 3.587242 -0.021885 1.026782 +v 3.587242 0.000000 1.024626 +v 3.587242 0.021885 1.026782 +v 3.587242 0.042928 1.033165 +v 3.587242 0.062322 1.043532 +v 3.587242 0.079321 1.057482 +v 3.587242 0.093272 1.074481 +v 3.587242 0.103638 1.093875 +v 3.587242 0.110022 1.114919 +v 3.587242 0.112177 1.136803 +v 3.587242 0.110022 1.158688 +v 3.587242 0.103638 1.179732 +v 3.587242 0.093272 1.199126 +v 3.587242 0.079321 1.216125 +v 3.587242 0.062322 1.230075 +v 3.587242 0.042928 1.240442 +v 3.587242 0.021884 1.246825 +v 2.943389 0.000000 0.623212 +v 2.946735 -0.033974 0.623212 +v 2.956646 -0.066642 0.623212 +v 2.972738 -0.096750 0.623212 +v 2.994395 -0.123139 0.623212 +v 3.020784 -0.144796 0.623212 +v 3.050892 -0.160889 0.623212 +v 3.083561 -0.170799 0.623212 +v 3.117535 -0.174145 0.623212 +v 3.151508 -0.170799 0.623212 +v 3.184176 -0.160889 0.623212 +v 3.214284 -0.144796 0.623212 +v 3.240674 -0.123139 0.623212 +v 3.262331 -0.096750 0.623212 +v 3.278424 -0.066642 0.623212 +v 3.288334 -0.033974 0.623212 +v 3.291679 0.000000 0.623212 +v 3.288334 0.033974 0.623212 +v 3.278424 0.066643 0.623212 +v 3.262331 0.096750 0.623212 +v 3.240674 0.123139 0.623212 +v 3.214284 0.144797 0.623212 +v 3.184176 0.160889 0.623212 +v 3.151508 0.170799 0.623212 +v 3.117535 0.174145 0.623212 +v 3.083561 0.170799 0.623212 +v 3.050892 0.160889 0.623212 +v 3.020784 0.144796 0.623212 +v 2.994395 0.123139 0.623212 +v 2.972738 0.096750 0.623212 +v 2.956645 0.066642 0.623212 +v 2.946735 0.033974 0.623212 +v 3.368539 -0.000000 1.205941 +v 3.048191 0.000000 0.918231 +v 3.050585 0.034861 0.917327 +v 3.369501 0.021297 1.204015 +v 3.057676 0.068383 0.914650 +v 3.372353 0.041775 1.198312 +v 3.069191 0.099276 0.910303 +v 3.376984 0.060648 1.189049 +v 3.084687 0.126355 0.904453 +v 3.383216 0.077190 1.176585 +v 3.103569 0.148578 0.897324 +v 3.390810 0.090766 1.161397 +v 3.125113 0.165091 0.889191 +v 3.399474 0.100854 1.144069 +v 3.148487 0.175260 0.880366 +v 3.408875 0.107066 1.125267 +v 3.172796 0.178693 0.871189 +v 3.418653 0.109163 1.105713 +v 3.197106 0.175260 0.862012 +v 3.428429 0.107066 1.086160 +v 3.220482 0.165091 0.853187 +v 3.437830 0.100854 1.067357 +v 3.242024 0.148578 0.845054 +v 3.446494 0.090766 1.050030 +v 3.260906 0.126355 0.837925 +v 3.454088 0.077190 1.034841 +v 3.276403 0.099277 0.832075 +v 3.460320 0.060648 1.022377 +v 3.287918 0.068383 0.827728 +v 3.464952 0.041775 1.013114 +v 3.295009 0.034861 0.825051 +v 3.467803 0.021297 1.007411 +v 3.297402 0.000000 0.824147 +v 3.468766 0.000000 1.005485 +v 3.295009 -0.034861 0.825051 +v 3.467803 -0.021297 1.007411 +v 3.287918 -0.068383 0.827728 +v 3.464952 -0.041775 1.013114 +v 3.276403 -0.099277 0.832075 +v 3.460320 -0.060648 1.022377 +v 3.260906 -0.126355 0.837925 +v 3.454088 -0.077190 1.034841 +v 3.242024 -0.148578 0.845054 +v 3.446494 -0.090766 1.050029 +v 3.220482 -0.165091 0.853187 +v 3.437830 -0.100854 1.067357 +v 3.197106 -0.175260 0.862012 +v 3.428429 -0.107066 1.086159 +v 3.172796 -0.178693 0.871189 +v 3.418652 -0.109163 1.105713 +v 3.148487 -0.175260 0.880366 +v 3.408875 -0.107066 1.125267 +v 3.125113 -0.165091 0.889191 +v 3.399475 -0.100854 1.144068 +v 3.103569 -0.148578 0.897324 +v 3.390810 -0.090766 1.161397 +v 3.084687 -0.126355 0.904453 +v 3.383216 -0.077190 1.176585 +v 3.069191 -0.099277 0.910303 +v 3.376984 -0.060648 1.189049 +v 3.057676 -0.068383 0.914650 +v 3.372353 -0.041775 1.198311 +v 3.050586 -0.034861 0.917327 +v 3.369501 -0.021297 1.204015 +v 3.174559 -0.027389 1.070436 +v 3.023735 0.000000 0.771381 +v 3.026553 0.034417 0.770809 +v 3.034897 0.067512 0.769114 +v 3.048448 0.098013 0.766362 +v 3.066685 0.124747 0.762658 +v 3.088904 0.146687 0.758145 +v 3.114257 0.162990 0.752996 +v 3.141765 0.173029 0.747409 +v 3.170372 0.176419 0.741599 +v 3.198979 0.173029 0.735789 +v 3.226487 0.162990 0.730202 +v 3.251839 0.146687 0.725053 +v 3.274060 0.124747 0.720540 +v 3.292296 0.098013 0.716836 +v 3.305847 0.067513 0.714084 +v 3.314192 0.034418 0.712389 +v 3.317009 0.000000 0.711817 +v 3.314192 -0.034418 0.712389 +v 3.305847 -0.067513 0.714084 +v 3.292296 -0.098013 0.716836 +v 3.274060 -0.124747 0.720540 +v 3.251839 -0.146687 0.725053 +v 3.226487 -0.162990 0.730202 +v 3.198979 -0.173029 0.735789 +v 3.170372 -0.176419 0.741599 +v 3.141765 -0.173029 0.747409 +v 3.114257 -0.162990 0.752996 +v 3.088905 -0.146687 0.758145 +v 3.066685 -0.124747 0.762658 +v 3.048448 -0.098013 0.766362 +v 3.034897 -0.067513 0.769114 +v 3.026553 -0.034418 0.770809 +v 3.194983 -0.000000 -0.630004 +v 3.596968 0.000000 -0.670318 +v 3.194983 -0.021885 -0.627848 +v 3.596968 -0.014454 -0.668894 +v 3.194983 -0.042928 -0.621465 +v 3.596968 -0.028353 -0.664678 +v 3.194983 -0.062322 -0.611099 +v 3.596968 -0.041162 -0.657831 +v 3.194983 -0.079321 -0.597148 +v 3.596968 -0.052389 -0.648617 +v 3.194983 -0.093272 -0.580149 +v 3.596968 -0.061603 -0.637390 +v 3.194983 -0.103638 -0.560755 +v 3.596968 -0.068449 -0.624581 +v 3.194983 -0.110022 -0.539711 +v 3.596968 -0.072665 -0.610682 +v 3.194983 -0.112177 -0.517827 +v 3.596968 -0.074089 -0.596228 +v 3.194983 -0.110022 -0.495942 +v 3.596968 -0.072665 -0.581774 +v 3.194983 -0.103638 -0.474898 +v 3.596968 -0.068449 -0.567876 +v 3.194983 -0.093272 -0.455504 +v 3.596968 -0.061603 -0.555067 +v 3.194983 -0.079321 -0.438506 +v 3.596968 -0.052389 -0.543840 +v 3.194983 -0.062322 -0.424555 +v 3.596968 -0.041162 -0.534626 +v 3.194983 -0.042928 -0.414189 +v 3.596968 -0.028353 -0.527779 +v 3.194983 -0.021885 -0.407805 +v 3.596968 -0.014454 -0.523563 +v 3.194983 0.000000 -0.405650 +v 3.596968 0.000000 -0.522139 +v 3.194983 0.021885 -0.407805 +v 3.596968 0.014454 -0.523563 +v 3.194983 0.042928 -0.414189 +v 3.596968 0.028353 -0.527779 +v 3.194983 0.062322 -0.424555 +v 3.596968 0.041162 -0.534626 +v 3.194983 0.079321 -0.438506 +v 3.596968 0.052389 -0.543840 +v 3.194983 0.093272 -0.455505 +v 3.596968 0.061603 -0.555067 +v 3.194983 0.103638 -0.474899 +v 3.596968 0.068449 -0.567876 +v 3.194983 0.110022 -0.495942 +v 3.596968 0.072665 -0.581774 +v 3.194983 0.112177 -0.517827 +v 3.596968 0.074089 -0.596228 +v 3.194983 0.110022 -0.539711 +v 3.596968 0.072665 -0.610683 +v 3.194983 0.103638 -0.560755 +v 3.596968 0.068449 -0.624581 +v 3.194983 0.093272 -0.580149 +v 3.596968 0.061603 -0.637390 +v 3.194983 0.079321 -0.597148 +v 3.596968 0.052389 -0.648617 +v 3.194983 0.062322 -0.611099 +v 3.596968 0.041162 -0.657831 +v 3.194983 0.042928 -0.621465 +v 3.596968 0.028353 -0.664678 +v 3.194983 0.021884 -0.627848 +v 3.596968 0.014454 -0.668894 +v 4.245420 -0.014454 -0.590492 +v 4.245420 0.000000 -0.591916 +v 4.245420 -0.028353 -0.586276 +v 4.245420 -0.041162 -0.579430 +v 4.245420 -0.052389 -0.570216 +v 4.245420 -0.061603 -0.558988 +v 4.245420 -0.068449 -0.546179 +v 4.245420 -0.072665 -0.532281 +v 4.245420 -0.074089 -0.517827 +v 4.245420 -0.072665 -0.503373 +v 4.245420 -0.068449 -0.489474 +v 4.245420 -0.061603 -0.476665 +v 4.245420 -0.052389 -0.465438 +v 4.245420 -0.041162 -0.456224 +v 4.245420 -0.028353 -0.449378 +v 4.245420 -0.014454 -0.445161 +v 4.245420 0.000000 -0.443738 +v 4.245420 0.014454 -0.445161 +v 4.245420 0.028353 -0.449378 +v 4.245420 0.041162 -0.456224 +v 4.245420 0.052389 -0.465438 +v 4.245420 0.061603 -0.476665 +v 4.245420 0.068449 -0.489474 +v 4.245420 0.072665 -0.503373 +v 4.245420 0.074089 -0.517827 +v 4.245420 0.072665 -0.532281 +v 4.245420 0.068449 -0.546180 +v 4.245420 0.061603 -0.558989 +v 4.245420 0.052389 -0.570216 +v 4.245420 0.041162 -0.579430 +v 4.245420 0.028353 -0.586276 +v 4.245420 0.014454 -0.590492 +v 4.881409 0.000001 -0.517827 +v 2.779208 -0.059018 -0.453871 +v 2.788416 -0.085681 -0.446689 +v 2.800806 -0.109051 -0.437025 +v 2.815905 -0.128230 -0.425250 +v 2.833130 -0.142482 -0.411815 +v 2.851821 -0.151258 -0.397238 +v 2.871259 -0.154221 -0.382077 +v 2.890697 -0.151258 -0.366917 +v 2.909387 -0.142482 -0.352340 +v 2.926613 -0.128230 -0.338905 +v 2.941710 -0.109051 -0.327129 +v 2.954102 -0.085681 -0.317465 +v 2.963308 -0.059018 -0.310284 +v 2.968979 -0.030087 -0.305862 +v 2.970894 0.000000 -0.304369 +v 2.968979 0.030087 -0.305862 +v 2.963308 0.059018 -0.310284 +v 2.954102 0.085681 -0.317465 +v 2.941710 0.109051 -0.327129 +v 2.926613 0.128230 -0.338905 +v 2.909387 0.142482 -0.352340 +v 2.890697 0.151258 -0.366917 +v 2.871259 0.154221 -0.382077 +v 2.851821 0.151258 -0.397238 +v 2.833130 0.142482 -0.411815 +v 2.815905 0.128230 -0.425250 +v 2.800806 0.109051 -0.437026 +v 2.788415 0.085681 -0.446690 +v 2.779208 0.059018 -0.453871 +v 2.773539 0.030087 -0.458293 +v 2.771625 0.000000 -0.459786 +v 3.194983 -0.000000 -0.630004 +v 3.194983 -0.021885 -0.627848 +v 3.194983 -0.042928 -0.621465 +v 3.194983 -0.062322 -0.611099 +v 3.194983 -0.079321 -0.597148 +v 3.194983 -0.093272 -0.580149 +v 3.194983 -0.103638 -0.560755 +v 3.194983 -0.110022 -0.539711 +v 3.194983 -0.112177 -0.517827 +v 3.194983 -0.110022 -0.495942 +v 3.194983 -0.103638 -0.474898 +v 3.194983 -0.093272 -0.455504 +v 3.194983 -0.079321 -0.438506 +v 3.194983 -0.062322 -0.424555 +v 3.194983 -0.042928 -0.414189 +v 3.194983 -0.021885 -0.407805 +v 3.194983 0.000000 -0.405650 +v 3.194983 0.021885 -0.407805 +v 3.194983 0.042928 -0.414189 +v 3.194983 0.062322 -0.424555 +v 3.194983 0.079321 -0.438506 +v 3.194983 0.093272 -0.455505 +v 3.194983 0.103638 -0.474899 +v 3.194983 0.110022 -0.495942 +v 3.194983 0.112177 -0.517827 +v 3.194983 0.110022 -0.539711 +v 3.194983 0.103638 -0.560755 +v 3.194983 0.093272 -0.580149 +v 3.194983 0.079321 -0.597148 +v 3.194983 0.062322 -0.611099 +v 3.194983 0.042928 -0.621465 +v 3.194983 0.021884 -0.627848 +v 2.551131 0.000000 -0.004236 +v 2.554478 -0.033974 -0.004236 +v 2.564387 -0.066643 -0.004236 +v 2.580481 -0.096750 -0.004236 +v 2.602138 -0.123139 -0.004236 +v 2.628527 -0.144796 -0.004236 +v 2.658634 -0.160889 -0.004236 +v 2.691302 -0.170799 -0.004236 +v 2.725277 -0.174145 -0.004236 +v 2.759251 -0.170799 -0.004236 +v 2.791919 -0.160889 -0.004236 +v 2.822027 -0.144796 -0.004235 +v 2.848416 -0.123139 -0.004235 +v 2.870073 -0.096750 -0.004235 +v 2.886166 -0.066642 -0.004235 +v 2.896076 -0.033974 -0.004235 +v 2.899422 0.000000 -0.004235 +v 2.896076 0.033974 -0.004235 +v 2.886166 0.066643 -0.004235 +v 2.870073 0.096750 -0.004235 +v 2.848415 0.123139 -0.004235 +v 2.822027 0.144797 -0.004235 +v 2.791919 0.160889 -0.004236 +v 2.759251 0.170799 -0.004236 +v 2.725277 0.174145 -0.004236 +v 2.691302 0.170799 -0.004236 +v 2.658634 0.160889 -0.004236 +v 2.628527 0.144796 -0.004236 +v 2.602138 0.123139 -0.004236 +v 2.580481 0.096750 -0.004236 +v 2.564387 0.066642 -0.004236 +v 2.554478 0.033974 -0.004236 +v 2.966830 0.000000 -0.605865 +v 2.655932 0.000000 -0.299254 +v 2.658328 0.034861 -0.298350 +v 2.967975 0.025313 -0.603576 +v 2.665419 0.068383 -0.295673 +v 2.971364 0.049653 -0.596797 +v 2.676933 0.099276 -0.291326 +v 2.976868 0.072085 -0.585788 +v 2.692430 0.126355 -0.285476 +v 2.984276 0.091746 -0.570973 +v 2.711311 0.148578 -0.278347 +v 2.993302 0.107882 -0.552921 +v 2.732855 0.165091 -0.270214 +v 3.003600 0.119873 -0.532325 +v 2.756229 0.175260 -0.261390 +v 3.014773 0.127256 -0.509977 +v 2.780539 0.178693 -0.252212 +v 3.026395 0.129749 -0.486736 +v 2.804849 0.175260 -0.243035 +v 3.038014 0.127256 -0.463495 +v 2.828223 0.165091 -0.234210 +v 3.049189 0.119873 -0.441148 +v 2.849766 0.148578 -0.226077 +v 3.059486 0.107883 -0.420552 +v 2.868649 0.126355 -0.218949 +v 3.068513 0.091747 -0.402500 +v 2.884145 0.099277 -0.213098 +v 3.075920 0.072085 -0.387684 +v 2.895660 0.068383 -0.208751 +v 3.081425 0.049653 -0.376676 +v 2.902751 0.034861 -0.206074 +v 3.084814 0.025313 -0.369897 +v 2.905145 0.000000 -0.205170 +v 3.085958 0.000000 -0.367608 +v 2.902751 -0.034861 -0.206074 +v 3.084814 -0.025313 -0.369897 +v 2.895660 -0.068383 -0.208751 +v 3.081425 -0.049653 -0.376676 +v 2.884145 -0.099277 -0.213098 +v 3.075920 -0.072085 -0.387684 +v 2.868649 -0.126355 -0.218949 +v 3.068513 -0.091747 -0.402500 +v 2.849766 -0.148578 -0.226077 +v 3.059486 -0.107883 -0.420552 +v 2.828223 -0.165091 -0.234210 +v 3.049189 -0.119873 -0.441148 +v 2.804849 -0.175260 -0.243035 +v 3.038014 -0.127256 -0.463495 +v 2.780539 -0.178693 -0.252212 +v 3.026395 -0.129749 -0.486736 +v 2.756229 -0.175260 -0.261390 +v 3.014773 -0.127256 -0.509977 +v 2.732855 -0.165091 -0.270214 +v 3.003600 -0.119873 -0.532325 +v 2.711311 -0.148578 -0.278347 +v 2.993302 -0.107883 -0.552921 +v 2.692430 -0.126355 -0.285476 +v 2.984276 -0.091747 -0.570973 +v 2.676933 -0.099277 -0.291326 +v 2.976868 -0.072085 -0.585788 +v 2.665419 -0.068383 -0.295673 +v 2.971364 -0.049653 -0.596797 +v 2.658328 -0.034861 -0.298350 +v 2.967975 -0.025313 -0.603576 +v 2.773539 -0.030087 -0.458293 +v 2.597857 0.000000 -0.152405 +v 2.600674 0.034417 -0.151832 +v 2.609018 0.067512 -0.150138 +v 2.622569 0.098013 -0.147386 +v 2.640805 0.124747 -0.143682 +v 2.663026 0.146687 -0.139169 +v 2.688377 0.162990 -0.134020 +v 2.715886 0.173029 -0.128433 +v 2.744493 0.176419 -0.122623 +v 2.773101 0.173029 -0.116812 +v 2.800609 0.162990 -0.111225 +v 2.825960 0.146687 -0.106076 +v 2.848182 0.124747 -0.101563 +v 2.866417 0.098013 -0.097859 +v 2.879968 0.067513 -0.095107 +v 2.888312 0.034418 -0.093412 +v 2.891130 0.000000 -0.092840 +v 2.888312 -0.034418 -0.093412 +v 2.879968 -0.067513 -0.095107 +v 2.866417 -0.098013 -0.097859 +v 2.848182 -0.124747 -0.101563 +v 2.825960 -0.146687 -0.106076 +v 2.800610 -0.162990 -0.111225 +v 2.773101 -0.173029 -0.116812 +v 2.744493 -0.176419 -0.122622 +v 2.715886 -0.173029 -0.128433 +v 2.688377 -0.162990 -0.134020 +v 2.663026 -0.146687 -0.139169 +v 2.640805 -0.124747 -0.143682 +v 2.622569 -0.098013 -0.147385 +v 2.609018 -0.067513 -0.150138 +v 2.600674 -0.034418 -0.151832 +v 2.267573 0.000000 0.523667 +v 2.274200 -0.030150 0.523667 +v 2.293830 -0.059141 0.523667 +v 2.325705 -0.085859 0.523667 +v 2.368602 -0.109278 0.523667 +v 2.420872 -0.128498 0.523667 +v 2.480506 -0.142779 0.523667 +v 2.545213 -0.151573 0.523667 +v 2.612506 -0.154543 0.523667 +v 2.679799 -0.151573 0.523667 +v 2.744506 -0.142779 0.523667 +v 2.804141 -0.128498 0.523667 +v 2.856410 -0.109278 0.523667 +v 2.899308 -0.085859 0.523667 +v 2.931183 -0.059141 0.523667 +v 2.950811 -0.030150 0.523667 +v 2.957439 0.000000 0.523667 +v 2.950811 0.030150 0.523667 +v 2.931183 0.059141 0.523667 +v 2.899307 0.085859 0.523667 +v 2.856410 0.109278 0.523667 +v 2.804141 0.128498 0.523667 +v 2.744506 0.142779 0.523667 +v 2.679799 0.151573 0.523667 +v 2.612506 0.154543 0.523667 +v 2.545213 0.151573 0.523667 +v 2.480506 0.142779 0.523667 +v 2.420871 0.128497 0.523667 +v 2.368602 0.109278 0.523667 +v 2.325705 0.085859 0.523667 +v 2.293830 0.059141 0.523667 +v 2.274200 0.030150 0.523667 +v 3.194983 -0.000000 1.733089 +v 3.596968 0.000000 1.773403 +v 3.194983 -0.021885 1.730934 +v 3.596968 -0.014454 1.771979 +v 3.194983 -0.042928 1.724550 +v 3.596968 -0.028353 1.767763 +v 3.194983 -0.062322 1.714184 +v 3.596968 -0.041162 1.760917 +v 3.194983 -0.079321 1.700234 +v 3.596968 -0.052389 1.751703 +v 3.194983 -0.093272 1.683235 +v 3.596968 -0.061603 1.740475 +v 3.194983 -0.103638 1.663841 +v 3.596968 -0.068449 1.727666 +v 3.194983 -0.110022 1.642797 +v 3.596968 -0.072665 1.713768 +v 3.194983 -0.112177 1.620912 +v 3.596968 -0.074089 1.699314 +v 3.194983 -0.110022 1.599028 +v 3.596968 -0.072665 1.684860 +v 3.194983 -0.103638 1.577984 +v 3.596968 -0.068449 1.670961 +v 3.194983 -0.093272 1.558590 +v 3.596968 -0.061603 1.658152 +v 3.194983 -0.079321 1.541591 +v 3.596968 -0.052389 1.646925 +v 3.194983 -0.062322 1.527641 +v 3.596968 -0.041162 1.637711 +v 3.194983 -0.042928 1.517274 +v 3.596968 -0.028353 1.630865 +v 3.194983 -0.021885 1.510891 +v 3.596968 -0.014454 1.626648 +v 3.194983 0.000000 1.508735 +v 3.596968 0.000000 1.625225 +v 3.194983 0.021885 1.510891 +v 3.596968 0.014454 1.626648 +v 3.194983 0.042928 1.517274 +v 3.596968 0.028353 1.630865 +v 3.194983 0.062322 1.527641 +v 3.596968 0.041162 1.637711 +v 3.194983 0.079321 1.541591 +v 3.596968 0.052389 1.646925 +v 3.194983 0.093272 1.558590 +v 3.596968 0.061603 1.658152 +v 3.194983 0.103638 1.577984 +v 3.596968 0.068449 1.670961 +v 3.194983 0.110022 1.599028 +v 3.596968 0.072665 1.684860 +v 3.194983 0.112177 1.620913 +v 3.596968 0.074089 1.699314 +v 3.194983 0.110022 1.642797 +v 3.596968 0.072665 1.713768 +v 3.194983 0.103638 1.663841 +v 3.596968 0.068449 1.727666 +v 3.194983 0.093272 1.683235 +v 3.596968 0.061603 1.740476 +v 3.194983 0.079321 1.700234 +v 3.596968 0.052389 1.751703 +v 3.194983 0.062322 1.714184 +v 3.596968 0.041162 1.760917 +v 3.194983 0.042928 1.724550 +v 3.596968 0.028353 1.767763 +v 3.194983 0.021884 1.730934 +v 3.596968 0.014454 1.771979 +v 4.245420 -0.014454 1.693577 +v 4.245420 0.000000 1.695001 +v 4.245420 -0.028353 1.689361 +v 4.245420 -0.041162 1.682515 +v 4.245420 -0.052389 1.673301 +v 4.245420 -0.061603 1.662074 +v 4.245420 -0.068449 1.649265 +v 4.245420 -0.072665 1.635366 +v 4.245420 -0.074089 1.620912 +v 4.245420 -0.072665 1.606458 +v 4.245420 -0.068449 1.592560 +v 4.245420 -0.061603 1.579751 +v 4.245420 -0.052389 1.568523 +v 4.245420 -0.041162 1.559309 +v 4.245420 -0.028353 1.552463 +v 4.245420 -0.014454 1.548247 +v 4.245420 0.000000 1.546823 +v 4.245420 0.014454 1.548247 +v 4.245420 0.028353 1.552463 +v 4.245420 0.041162 1.559309 +v 4.245420 0.052389 1.568523 +v 4.245420 0.061603 1.579751 +v 4.245420 0.068449 1.592560 +v 4.245420 0.072665 1.606458 +v 4.245420 0.074089 1.620912 +v 4.245420 0.072665 1.635366 +v 4.245420 0.068449 1.649265 +v 4.245420 0.061603 1.662074 +v 4.245420 0.052389 1.673301 +v 4.245420 0.041162 1.682515 +v 4.245420 0.028353 1.689361 +v 4.245420 0.014454 1.693577 +v 4.881409 0.000001 1.620912 +v 2.779208 -0.059018 1.556956 +v 2.788415 -0.085681 1.549775 +v 2.800806 -0.109051 1.540111 +v 2.815905 -0.128230 1.528336 +v 2.833130 -0.142482 1.514901 +v 2.851821 -0.151258 1.500323 +v 2.871259 -0.154221 1.485163 +v 2.890697 -0.151258 1.470003 +v 2.909387 -0.142482 1.455426 +v 2.926612 -0.128230 1.441991 +v 2.941710 -0.109051 1.430215 +v 2.954102 -0.085681 1.420551 +v 2.963308 -0.059018 1.413370 +v 2.968979 -0.030087 1.408948 +v 2.970893 0.000000 1.407455 +v 2.968979 0.030087 1.408948 +v 2.963308 0.059018 1.413370 +v 2.954102 0.085681 1.420551 +v 2.941710 0.109051 1.430215 +v 2.926612 0.128230 1.441991 +v 2.909387 0.142482 1.455426 +v 2.890697 0.151258 1.470003 +v 2.871259 0.154221 1.485163 +v 2.851821 0.151258 1.500324 +v 2.833130 0.142482 1.514901 +v 2.815905 0.128230 1.528336 +v 2.800806 0.109051 1.540111 +v 2.788415 0.085681 1.549775 +v 2.779208 0.059018 1.556956 +v 2.773539 0.030087 1.561378 +v 2.771625 0.000000 1.562871 +v 3.194983 -0.000000 1.733089 +v 3.194983 -0.021885 1.730934 +v 3.194983 -0.042928 1.724550 +v 3.194983 -0.062322 1.714184 +v 3.194983 -0.079321 1.700234 +v 3.194983 -0.093272 1.683235 +v 3.194983 -0.103638 1.663841 +v 3.194983 -0.110022 1.642797 +v 3.194983 -0.112177 1.620912 +v 3.194983 -0.110022 1.599028 +v 3.194983 -0.103638 1.577984 +v 3.194983 -0.093272 1.558590 +v 3.194983 -0.079321 1.541591 +v 3.194983 -0.062322 1.527641 +v 3.194983 -0.042928 1.517274 +v 3.194983 -0.021885 1.510891 +v 3.194983 0.000000 1.508735 +v 3.194983 0.021885 1.510891 +v 3.194983 0.042928 1.517274 +v 3.194983 0.062322 1.527641 +v 3.194983 0.079321 1.541591 +v 3.194983 0.093272 1.558590 +v 3.194983 0.103638 1.577984 +v 3.194983 0.110022 1.599028 +v 3.194983 0.112177 1.620913 +v 3.194983 0.110022 1.642797 +v 3.194983 0.103638 1.663841 +v 3.194983 0.093272 1.683235 +v 3.194983 0.079321 1.700234 +v 3.194983 0.062322 1.714184 +v 3.194983 0.042928 1.724550 +v 3.194983 0.021884 1.730934 +v 2.551131 0.000000 1.107321 +v 2.554478 -0.033974 1.107321 +v 2.564387 -0.066642 1.107321 +v 2.580481 -0.096750 1.107321 +v 2.602138 -0.123139 1.107321 +v 2.628527 -0.144796 1.107321 +v 2.658634 -0.160889 1.107321 +v 2.691302 -0.170799 1.107321 +v 2.725277 -0.174145 1.107321 +v 2.759251 -0.170799 1.107321 +v 2.791919 -0.160889 1.107321 +v 2.822026 -0.144796 1.107321 +v 2.848415 -0.123139 1.107321 +v 2.870073 -0.096750 1.107321 +v 2.886166 -0.066642 1.107321 +v 2.896075 -0.033974 1.107321 +v 2.899422 0.000000 1.107321 +v 2.896075 0.033974 1.107321 +v 2.886166 0.066643 1.107321 +v 2.870073 0.096750 1.107321 +v 2.848415 0.123139 1.107321 +v 2.822026 0.144797 1.107321 +v 2.791919 0.160889 1.107321 +v 2.759251 0.170799 1.107321 +v 2.725277 0.174145 1.107321 +v 2.691302 0.170799 1.107321 +v 2.658634 0.160889 1.107321 +v 2.628527 0.144796 1.107321 +v 2.602138 0.123139 1.107321 +v 2.580481 0.096750 1.107321 +v 2.564387 0.066642 1.107321 +v 2.554478 0.033974 1.107321 +v 2.966829 0.000000 1.708951 +v 2.655932 0.000000 1.402340 +v 2.658327 0.034861 1.401436 +v 2.967975 0.025313 1.706662 +v 2.665419 0.068383 1.398759 +v 2.971364 0.049653 1.699883 +v 2.676933 0.099276 1.394412 +v 2.976868 0.072085 1.688874 +v 2.692430 0.126355 1.388562 +v 2.984276 0.091746 1.674059 +v 2.711311 0.148578 1.381433 +v 2.993302 0.107882 1.656006 +v 2.732854 0.165091 1.373300 +v 3.003600 0.119873 1.635411 +v 2.756229 0.175260 1.364475 +v 3.014773 0.127256 1.613063 +v 2.780539 0.178693 1.355298 +v 3.026394 0.129749 1.589822 +v 2.804849 0.175260 1.346121 +v 3.038014 0.127256 1.566581 +v 2.828223 0.165091 1.337296 +v 3.049189 0.119873 1.544233 +v 2.849766 0.148578 1.329163 +v 3.059486 0.107883 1.523638 +v 2.868649 0.126355 1.322034 +v 3.068513 0.091747 1.505585 +v 2.884145 0.099277 1.316184 +v 3.075920 0.072085 1.490770 +v 2.895660 0.068383 1.311837 +v 3.081425 0.049653 1.479761 +v 2.902751 0.034861 1.309160 +v 3.084814 0.025313 1.472982 +v 2.905145 0.000000 1.308256 +v 3.085958 0.000000 1.470693 +v 2.902751 -0.034861 1.309160 +v 3.084814 -0.025313 1.472982 +v 2.895660 -0.068383 1.311837 +v 3.081425 -0.049653 1.479761 +v 2.884145 -0.099277 1.316184 +v 3.075920 -0.072085 1.490770 +v 2.868649 -0.126355 1.322034 +v 3.068513 -0.091747 1.505585 +v 2.849766 -0.148578 1.329163 +v 3.059486 -0.107883 1.523638 +v 2.828223 -0.165091 1.337296 +v 3.049189 -0.119873 1.544233 +v 2.804849 -0.175260 1.346121 +v 3.038014 -0.127256 1.566581 +v 2.780539 -0.178693 1.355298 +v 3.026394 -0.129749 1.589822 +v 2.756229 -0.175260 1.364475 +v 3.014773 -0.127256 1.613063 +v 2.732855 -0.165091 1.373300 +v 3.003600 -0.119873 1.635411 +v 2.711311 -0.148578 1.381433 +v 2.993302 -0.107883 1.656006 +v 2.692430 -0.126355 1.388562 +v 2.984276 -0.091747 1.674059 +v 2.676933 -0.099277 1.394412 +v 2.976868 -0.072085 1.688874 +v 2.665419 -0.068383 1.398759 +v 2.971364 -0.049653 1.699882 +v 2.658328 -0.034861 1.401436 +v 2.967975 -0.025313 1.706662 +v 2.773539 -0.030087 1.561378 +v 2.597857 0.000000 1.255490 +v 2.600674 0.034417 1.254918 +v 2.609018 0.067512 1.253223 +v 2.622569 0.098013 1.250471 +v 2.640805 0.124747 1.246768 +v 2.663026 0.146687 1.242254 +v 2.688377 0.162990 1.237106 +v 2.715885 0.173029 1.231518 +v 2.744493 0.176419 1.225708 +v 2.773101 0.173029 1.219898 +v 2.800609 0.162990 1.214311 +v 2.825960 0.146687 1.209162 +v 2.848182 0.124747 1.204649 +v 2.866417 0.098013 1.200945 +v 2.879968 0.067513 1.198193 +v 2.888312 0.034418 1.196498 +v 2.891130 0.000000 1.195926 +v 2.888312 -0.034418 1.196498 +v 2.879968 -0.067513 1.198193 +v 2.866417 -0.098013 1.200945 +v 2.848182 -0.124747 1.204649 +v 2.825960 -0.146687 1.209162 +v 2.800609 -0.162990 1.214311 +v 2.773101 -0.173029 1.219898 +v 2.744493 -0.176419 1.225708 +v 2.715886 -0.173029 1.231518 +v 2.688377 -0.162990 1.237106 +v 2.663026 -0.146687 1.242254 +v 2.640805 -0.124747 1.246768 +v 2.622569 -0.098013 1.250471 +v 2.609018 -0.067513 1.253223 +v 2.600674 -0.034418 1.254918 +v 2.267572 0.000000 0.579419 +v 2.274200 -0.030150 0.579419 +v 2.293830 -0.059141 0.579419 +v 2.325705 -0.085859 0.579419 +v 2.368602 -0.109278 0.579419 +v 2.420872 -0.128498 0.579419 +v 2.480506 -0.142779 0.579419 +v 2.545213 -0.151573 0.579419 +v 2.612506 -0.154543 0.579419 +v 2.679799 -0.151573 0.579419 +v 2.744506 -0.142779 0.579419 +v 2.804141 -0.128498 0.579419 +v 2.856410 -0.109278 0.579419 +v 2.899307 -0.085859 0.579419 +v 2.931183 -0.059141 0.579419 +v 2.950811 -0.030150 0.579419 +v 2.957439 0.000000 0.579419 +v 2.950811 0.030150 0.579419 +v 2.931183 0.059141 0.579419 +v 2.899307 0.085859 0.579419 +v 2.856410 0.109278 0.579419 +v 2.804140 0.128498 0.579419 +v 2.744506 0.142779 0.579419 +v 2.679799 0.151573 0.579419 +v 2.612506 0.154543 0.579419 +v 2.545213 0.151573 0.579419 +v 2.480506 0.142779 0.579419 +v 2.420871 0.128497 0.579419 +v 2.368602 0.109278 0.579419 +v 2.325705 0.085859 0.579419 +v 2.293830 0.059141 0.579419 +v 2.274200 0.030150 0.579419 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.406250 1.000000 +vt 0.437500 1.000000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.375000 1.000000 +vt 0.406250 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 1.000000 0.500000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.031250 0.500000 +vt 0.031250 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.968750 1.000000 +vt 1.000000 1.000000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.656250 0.500000 +vt 0.656250 0.500000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.031250 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.031250 1.000000 +vt 0.812500 1.000000 +vt 0.781250 1.000000 +vt 0.343750 1.000000 +vt 0.750000 1.000000 +vt 0.312500 1.000000 +vt 0.718750 1.000000 +vt 0.281250 1.000000 +vt 0.687500 1.000000 +vt 0.250000 1.000000 +vt 0.656250 1.000000 +vt 0.218750 1.000000 +vt 0.625000 1.000000 +vt 0.187500 1.000000 +vt 0.593750 1.000000 +vt 0.156250 1.000000 +vt 0.562500 1.000000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 0.125000 1.000000 +vt 0.531250 1.000000 +vt 0.937500 1.000000 +vt 0.093750 1.000000 +vt 0.500000 1.000000 +vt 0.906250 1.000000 +vt 0.468750 1.000000 +vt 0.875000 1.000000 +vt 0.437500 1.000000 +vt 0.843750 1.000000 +vt 0.000000 1.000000 +vt 0.343750 1.000000 +vt 0.375000 1.000000 +vt 0.343750 1.000000 +vt 0.468750 1.000000 +vt 0.437500 1.000000 +vt 0.875000 1.000000 +vt 0.843750 1.000000 +vt 0.000000 1.000000 +vt 0.406250 1.000000 +vt 0.812500 1.000000 +vt 0.781250 1.000000 +vt 0.750000 1.000000 +vt 0.312500 1.000000 +vt 0.718750 1.000000 +vt 0.281250 1.000000 +vt 0.687500 1.000000 +vt 0.250000 1.000000 +vt 0.656250 1.000000 +vt 0.218750 1.000000 +vt 0.625000 1.000000 +vt 0.187500 1.000000 +vt 0.593750 1.000000 +vt 0.156250 1.000000 +vt 0.562500 1.000000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 0.125000 1.000000 +vt 0.531250 1.000000 +vt 0.937500 1.000000 +vt 0.093750 1.000000 +vt 0.500000 1.000000 +vt 0.906250 1.000000 +vt 0.750000 1.000000 +vt 0.312500 1.000000 +vt 0.718750 1.000000 +vt 0.281250 1.000000 +vt 0.687500 1.000000 +vt 0.250000 1.000000 +vt 0.656250 1.000000 +vt 0.218750 1.000000 +vt 0.625000 1.000000 +vt 0.187500 1.000000 +vt 0.593750 1.000000 +vt 0.156250 1.000000 +vt 0.562500 1.000000 +vt 0.968750 1.000000 +vt 0.125000 1.000000 +vt 0.531250 1.000000 +vt 0.937500 1.000000 +vt 0.093750 1.000000 +vt 0.500000 1.000000 +vt 0.906250 1.000000 +vt 0.062500 1.000000 +vt 0.468750 1.000000 +vt 0.875000 1.000000 +vt 0.031250 1.000000 +vt 0.437500 1.000000 +vt 0.843750 1.000000 +vt 0.000000 1.000000 +vt 0.406250 1.000000 +vt 0.812500 1.000000 +vt 0.375000 1.000000 +vt 0.781250 1.000000 +vt 0.437500 1.000000 +vt 0.468750 1.000000 +vt 0.500000 1.000000 +vt 0.531250 1.000000 +vt 0.562500 1.000000 +vt 0.593750 1.000000 +vt 0.625000 1.000000 +vt 0.656250 1.000000 +vt 0.687500 1.000000 +vt 0.718750 1.000000 +vt 0.750000 1.000000 +vt 0.781250 1.000000 +vt 0.812500 1.000000 +vt 0.843750 1.000000 +vt 0.000000 1.000000 +vt 0.031250 1.000000 +vt 0.875000 1.000000 +vt 0.062500 1.000000 +vt 0.906250 1.000000 +vt 0.093750 1.000000 +vt 0.937500 1.000000 +vt 0.125000 1.000000 +vt 0.968750 1.000000 +vt 0.156250 1.000000 +vt 1.000000 1.000000 +vt 0.187500 1.000000 +vt 0.218750 1.000000 +vt 0.250000 1.000000 +vt 0.281250 1.000000 +vt 0.312500 1.000000 +vt 0.343750 1.000000 +vt 0.375000 1.000000 +vt 0.406250 1.000000 +vt 0.406250 1.000000 +vt 0.437500 1.000000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.406250 1.000000 +vt 0.437500 1.000000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.406250 1.000000 +vt 0.437500 1.000000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.406250 1.000000 +vt 0.437500 1.000000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.343750 1.000000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.312500 1.000000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.281250 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.156250 1.000000 +vt 0.968750 1.000000 +vt 1.000000 1.000000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 0.968750 1.000000 +vt 1.000000 1.000000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 0.968750 1.000000 +vt 1.000000 1.000000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 0.968750 1.000000 +vt 1.000000 1.000000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.125000 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.937500 1.000000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.093750 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.906250 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.875000 1.000000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.031250 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.843750 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.812500 1.000000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.781250 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.718750 1.000000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.687500 1.000000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.656250 1.000000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.593750 1.000000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.531250 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.468750 1.000000 +vt 0.281250 0.500000 +vt 0.250000 0.500000 +vt 0.250000 0.500000 +vt 0.281250 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.656250 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.218750 0.500000 +vt 0.218750 0.500000 +vt 0.281250 0.500000 +vt 0.250000 0.500000 +vt 0.312500 0.500000 +vt 0.343750 0.500000 +vt 0.375000 0.500000 +vt 0.406250 0.500000 +vt 0.437500 0.500000 +vt 0.468750 0.500000 +vt 0.500000 0.500000 +vt 0.531250 0.500000 +vt 0.562500 0.500000 +vt 0.593750 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.687500 0.500000 +vt 0.718750 0.500000 +vt 0.750000 0.500000 +vt 0.781250 0.500000 +vt 0.812500 0.500000 +vt 0.843750 0.500000 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.875000 0.500000 +vt 0.062500 0.500000 +vt 0.906250 0.500000 +vt 0.093750 0.500000 +vt 0.937500 0.500000 +vt 0.125000 0.500000 +vt 0.968750 0.500000 +vt 0.156250 0.500000 +vt 1.000000 0.500000 +vt 0.187500 0.500000 +vt 0.218750 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.968750 0.500000 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 1.000000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.031250 0.500000 +vt 0.031250 0.500000 +vt 0.031250 0.500000 +vt 0.031250 0.500000 +vt 0.031250 0.500000 +vt 0.031250 0.500000 +vt 0.031250 0.500000 +vt 0.031250 0.500000 +vt 0.031250 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.656250 0.500000 +vt 0.656250 0.500000 +vt 0.656250 0.500000 +vt 0.656250 0.500000 +vt 0.656250 0.500000 +vt 0.656250 0.500000 +vt 0.656250 0.500000 +vt 0.656250 0.500000 +vt 0.656250 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.218750 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.218750 0.500000 +vt 0.656250 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 1.000000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.031250 0.500000 +vt 0.031250 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.750000 0.490000 +vt 0.796822 0.485388 +vt 0.841844 0.471731 +vt 0.883337 0.449553 +vt 0.919706 0.419706 +vt 0.949553 0.383337 +vt 0.971731 0.341844 +vt 0.985388 0.296822 +vt 0.990000 0.250000 +vt 0.985388 0.203178 +vt 0.971731 0.158156 +vt 0.949553 0.116663 +vt 0.919706 0.080294 +vt 0.883337 0.050447 +vt 0.841844 0.028269 +vt 0.796822 0.014612 +vt 0.750000 0.010000 +vt 0.703178 0.014612 +vt 0.658156 0.028269 +vt 0.616663 0.050447 +vt 0.580294 0.080294 +vt 0.550447 0.116663 +vt 0.528269 0.158156 +vt 0.514611 0.203179 +vt 0.510000 0.250000 +vt 0.514612 0.296822 +vt 0.528269 0.341844 +vt 0.550447 0.383337 +vt 0.580295 0.419706 +vt 0.616663 0.449553 +vt 0.658156 0.471731 +vt 0.703179 0.485389 +vt 0.625000 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.625000 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 1.000000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.031250 0.500000 +vt 0.031250 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.250000 0.500000 +vt 0.250000 0.500000 +vt 0.656250 0.500000 +vt 0.656250 0.500000 +vt 0.656250 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.218750 0.500000 +vt 0.593750 0.500000 +vt 0.625000 0.500000 +vt 0.156250 0.500000 +vt 0.562500 0.500000 +vt 0.968750 0.500000 +vt 1.000000 0.500000 +vt 0.125000 0.500000 +vt 0.531250 0.500000 +vt 0.937500 0.500000 +vt 0.093750 0.500000 +vt 0.500000 0.500000 +vt 0.906250 0.500000 +vt 0.062500 0.500000 +vt 0.468750 0.500000 +vt 0.875000 0.500000 +vt 0.031250 0.500000 +vt 0.437500 0.500000 +vt 0.843750 0.500000 +vt 0.000000 0.500000 +vt 0.406250 0.500000 +vt 0.812500 0.500000 +vt 0.375000 0.500000 +vt 0.781250 0.500000 +vt 0.343750 0.500000 +vt 0.750000 0.500000 +vt 0.312500 0.500000 +vt 0.718750 0.500000 +vt 0.281250 0.500000 +vt 0.687500 0.500000 +vt 0.250000 0.500000 +vt 0.656250 0.500000 +vt 0.218750 0.500000 +vt 0.187500 0.500000 +vt 0.625000 0.500000 +vt 0.593750 0.500000 +vt 0.156250 0.500000 +vt 0.562500 0.500000 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 0.125000 0.500000 +vt 0.531250 0.500000 +vt 0.937500 0.500000 +vt 0.093750 0.500000 +vt 0.500000 0.500000 +vt 0.906250 0.500000 +vt 0.062500 0.500000 +vt 0.468750 0.500000 +vt 0.875000 0.500000 +vt 0.031250 0.500000 +vt 0.437500 0.500000 +vt 0.843750 0.500000 +vt 0.000000 0.500000 +vt 0.406250 0.500000 +vt 0.812500 0.500000 +vt 0.375000 0.500000 +vt 0.781250 0.500000 +vt 0.343750 0.500000 +vt 0.750000 0.500000 +vt 0.312500 0.500000 +vt 0.718750 0.500000 +vt 0.281250 0.500000 +vt 0.687500 0.500000 +vt 0.250000 0.500000 +vt 0.656250 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.625000 0.500000 +vt 0.656250 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.218750 0.500000 +vt 0.250000 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.687500 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.281250 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.718750 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.343750 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.781250 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.812500 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.406250 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.843750 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.500000 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.468750 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.906250 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.937500 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.531250 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.562500 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 0.156250 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.593750 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 0.187500 0.500000 +vt 1.000000 0.500000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 0.968750 0.500000 +vt 0.937500 1.000000 +vt 0.937500 0.500000 +vt 0.906250 1.000000 +vt 0.906250 0.500000 +vt 0.875000 1.000000 +vt 0.875000 0.500000 +vt 0.843750 1.000000 +vt 0.843750 0.500000 +vt 0.812500 1.000000 +vt 0.812500 0.500000 +vt 0.781250 1.000000 +vt 0.781250 0.500000 +vt 0.750000 1.000000 +vt 0.750000 0.500000 +vt 0.718750 1.000000 +vt 0.718750 0.500000 +vt 0.687500 1.000000 +vt 0.687500 0.500000 +vt 0.656250 1.000000 +vt 0.656250 0.500000 +vt 0.625000 1.000000 +vt 0.625000 0.500000 +vt 0.593750 1.000000 +vt 0.593750 0.500000 +vt 0.562500 1.000000 +vt 0.562500 0.500000 +vt 0.531250 1.000000 +vt 0.531250 0.500000 +vt 0.500000 1.000000 +vt 0.500000 0.500000 +vt 0.468750 1.000000 +vt 0.468750 0.500000 +vt 0.437500 1.000000 +vt 0.437500 0.500000 +vt 0.406250 1.000000 +vt 0.406250 0.500000 +vt 0.375000 1.000000 +vt 0.375000 0.500000 +vt 0.343750 1.000000 +vt 0.343750 0.500000 +vt 0.312500 1.000000 +vt 0.312500 0.500000 +vt 0.281250 1.000000 +vt 0.281250 0.500000 +vt 0.250000 1.000000 +vt 0.250000 0.500000 +vt 0.218750 1.000000 +vt 0.218750 0.500000 +vt 0.187500 1.000000 +vt 0.187500 0.500000 +vt 0.156250 1.000000 +vt 0.156250 0.500000 +vt 0.125000 1.000000 +vt 0.125000 0.500000 +vt 0.093750 1.000000 +vt 0.093750 0.500000 +vt 0.062500 1.000000 +vt 0.062500 0.500000 +vt 0.718750 1.000000 +vt 0.687500 1.000000 +vt 0.031250 1.000000 +vt 0.031250 0.500000 +vt 0.000000 1.000000 +vt 0.000000 0.500000 +vt 0.812500 0.500000 +vt 0.843750 0.500000 +vt 0.562500 1.000000 +vt 0.593750 1.000000 +vt 0.562500 1.000000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.156250 1.000000 +vt 0.125000 1.000000 +vt 0.843750 1.000000 +vt 0.812500 1.000000 +vt 0.531250 1.000000 +vt 0.281250 1.000000 +vt 0.250000 1.000000 +vt 0.968750 1.000000 +vt 0.937500 1.000000 +vt 0.656250 1.000000 +vt 0.375000 1.000000 +vt 0.093750 1.000000 +vt 0.781250 1.000000 +vt 0.500000 1.000000 +vt 0.218750 1.000000 +vt 0.906250 1.000000 +vt 0.625000 1.000000 +vt 0.343750 1.000000 +vt 0.062500 1.000000 +vt 0.750000 1.000000 +vt 0.468750 1.000000 +vt 0.187500 1.000000 +vt 0.875000 1.000000 +vt 0.312500 1.000000 +vt 0.031250 1.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.890975 0.466368 +vt 0.873729 0.481154 +vt 0.889672 0.485865 +vt 0.894793 0.474776 +vt 0.968750 1.000000 +vt 0.125000 1.000000 +vt 0.531250 1.000000 +vt 0.937500 1.000000 +vt 0.093750 1.000000 +vt 0.500000 1.000000 +vt 0.906250 1.000000 +vt 0.062500 1.000000 +vt 0.468750 1.000000 +vt 0.875000 1.000000 +vt 0.031250 1.000000 +vt 0.437500 1.000000 +vt 0.843750 1.000000 +vt 0.000000 1.000000 +vt 0.406250 1.000000 +vt 0.812500 1.000000 +vt 0.375000 1.000000 +vt 0.781250 1.000000 +vt 0.343750 1.000000 +vt 0.750000 1.000000 +vt 0.312500 1.000000 +vt 0.718750 1.000000 +vt 0.281250 1.000000 +vt 0.687500 1.000000 +vt 0.250000 1.000000 +vt 0.656250 1.000000 +vt 0.218750 1.000000 +vt 0.625000 1.000000 +vt 0.187500 1.000000 +vt 0.593750 1.000000 +vt 0.156250 1.000000 +vt 0.250000 0.496667 +vt 0.255226 0.495129 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.531250 0.500000 +vt 0.562500 0.500000 +vt 0.250000 0.500000 +vt 0.281250 0.500000 +vt 0.937500 0.500000 +vt 0.968750 0.500000 +vt 0.656250 0.500000 +vt 0.687500 0.500000 +vt 0.375000 0.500000 +vt 0.406250 0.500000 +vt 0.093750 0.500000 +vt 0.125000 0.500000 +vt 0.781250 0.500000 +vt 0.500000 0.500000 +vt 0.218750 0.500000 +vt 0.906250 0.500000 +vt 0.625000 0.500000 +vt 0.343750 0.500000 +vt 0.062500 0.500000 +vt 0.750000 0.500000 +vt 0.468750 0.500000 +vt 0.187500 0.500000 +vt 0.875000 0.500000 +vt 0.593750 0.500000 +vt 0.312500 0.500000 +vt 0.718750 0.500000 +vt 0.437500 0.500000 +vt 0.156250 0.500000 +vt 1.000000 0.500000 +vt 0.750000 0.490000 +vt 0.796822 0.485388 +vt 0.841844 0.471731 +vt 0.883337 0.449553 +vt 0.919706 0.419706 +vt 0.949553 0.383337 +vt 0.971731 0.341844 +vt 0.985388 0.296822 +vt 0.990000 0.250000 +vt 0.985388 0.203178 +vt 0.971731 0.158156 +vt 0.949553 0.116663 +vt 0.919706 0.080294 +vt 0.883337 0.050447 +vt 0.841844 0.028269 +vt 0.796822 0.014612 +vt 0.750000 0.010000 +vt 0.703178 0.014612 +vt 0.658156 0.028269 +vt 0.616663 0.050447 +vt 0.580294 0.080294 +vt 0.550447 0.116663 +vt 0.528269 0.158156 +vt 0.514611 0.203179 +vt 0.510000 0.250000 +vt 0.514612 0.296822 +vt 0.528269 0.341844 +vt 0.550447 0.383337 +vt 0.580295 0.419706 +vt 0.616663 0.449553 +vt 0.658156 0.471731 +vt 0.703179 0.485389 +vt 0.261052 0.490577 +vt 0.268054 0.483184 +vt 0.276765 0.473235 +vt 0.287649 0.461112 +vt 0.301090 0.447281 +vt 0.317371 0.432274 +vt 0.336667 0.416667 +vt 0.359037 0.401060 +vt 0.384423 0.386052 +vt 0.412649 0.372221 +vt 0.443431 0.360098 +vt 0.476388 0.350149 +vt 0.511052 0.342756 +vt 0.546893 0.338204 +vt 0.583333 0.336667 +vt 0.619774 0.338204 +vt 0.655615 0.342756 +vt 0.690279 0.350149 +vt 0.723235 0.360098 +vt 0.754018 0.372221 +vt 0.782244 0.386052 +vt 0.807629 0.401059 +vt 0.830000 0.416667 +vt 0.849296 0.432274 +vt 0.865577 0.447281 +vt 0.879017 0.461112 +vt 0.889902 0.473235 +vt 0.898612 0.483184 +vt 0.905614 0.490577 +vt 0.911441 0.495129 +vt 0.916667 0.496667 +vt 0.825476 0.487824 +vt 0.791667 0.491667 +vt 0.833333 0.493333 +vt 0.854131 0.490259 +vt 0.882786 0.492694 +vt 0.875000 0.495000 +vt 0.857787 0.476443 +vt 0.887156 0.457961 +vt 0.912255 0.433088 +vt 0.904804 0.446470 +vt 0.897353 0.459853 +vt 0.931919 0.402781 +vt 0.914285 0.422224 +vt 0.896651 0.441668 +vt 0.945192 0.368203 +vt 0.918654 0.394563 +vt 0.892115 0.420922 +vt 0.951365 0.330685 +vt 0.917342 0.364548 +vt 0.883319 0.398411 +vt 0.950000 0.291667 +vt 0.910000 0.333333 +vt 0.870000 0.375000 +vt 0.940949 0.252649 +vt 0.896509 0.302119 +vt 0.852069 0.351589 +vt 0.924359 0.215130 +vt 0.876987 0.272104 +vt 0.829616 0.329078 +vt 0.900669 0.180553 +vt 0.851785 0.244442 +vt 0.802901 0.308332 +vt 0.870588 0.150245 +vt 0.821470 0.220196 +vt 0.772353 0.290147 +vt 0.835072 0.125373 +vt 0.786808 0.200298 +vt 0.738543 0.275224 +vt 0.795287 0.106891 +vt 0.748729 0.185513 +vt 0.702172 0.264134 +vt 0.752560 0.095510 +vt 0.708298 0.176408 +vt 0.664036 0.257306 +vt 0.708333 0.091667 +vt 0.666667 0.173333 +vt 0.625000 0.255000 +vt 0.664107 0.095510 +vt 0.625035 0.176408 +vt 0.585964 0.257306 +vt 0.621380 0.106891 +vt 0.584604 0.185513 +vt 0.547828 0.264134 +vt 0.581594 0.125373 +vt 0.546525 0.200298 +vt 0.511457 0.275224 +vt 0.546079 0.150245 +vt 0.511863 0.220196 +vt 0.477647 0.290147 +vt 0.515998 0.180553 +vt 0.481548 0.244442 +vt 0.447099 0.308332 +vt 0.492307 0.215130 +vt 0.456346 0.272104 +vt 0.420384 0.329078 +vt 0.475718 0.252649 +vt 0.436824 0.302119 +vt 0.397931 0.351589 +vt 0.466667 0.291667 +vt 0.423333 0.333333 +vt 0.380000 0.375000 +vt 0.465301 0.330685 +vt 0.415991 0.364548 +vt 0.366681 0.398411 +vt 0.471474 0.368204 +vt 0.414679 0.394563 +vt 0.357885 0.420922 +vt 0.484748 0.402781 +vt 0.419048 0.422225 +vt 0.353349 0.441669 +vt 0.504412 0.433088 +vt 0.428530 0.446470 +vt 0.352647 0.459853 +vt 0.529511 0.457961 +vt 0.442359 0.466368 +vt 0.355207 0.474776 +vt 0.558880 0.476443 +vt 0.459604 0.481154 +vt 0.360328 0.485866 +vt 0.591191 0.487824 +vt 0.479202 0.490259 +vt 0.367214 0.492694 +vt 0.625000 0.491667 +vt 0.500000 0.493333 +vt 0.375000 0.495000 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 0.968750 1.000000 +vt 1.000000 1.000000 +vt 0.937500 0.500000 +vt 0.937500 1.000000 +vt 0.906250 0.500000 +vt 0.906250 1.000000 +vt 0.875000 0.500000 +vt 0.875000 1.000000 +vt 0.843750 0.500000 +vt 0.843750 1.000000 +vt 0.812500 0.500000 +vt 0.812500 1.000000 +vt 0.781250 0.500000 +vt 0.781250 1.000000 +vt 0.750000 0.500000 +vt 0.750000 1.000000 +vt 0.718750 0.500000 +vt 0.718750 1.000000 +vt 0.687500 0.500000 +vt 0.687500 1.000000 +vt 0.656250 0.500000 +vt 0.656250 1.000000 +vt 0.625000 0.500000 +vt 0.625000 1.000000 +vt 0.593750 0.500000 +vt 0.593750 1.000000 +vt 0.562500 0.500000 +vt 0.562500 1.000000 +vt 0.531250 0.500000 +vt 0.531250 1.000000 +vt 0.500000 0.500000 +vt 0.500000 1.000000 +vt 0.468750 0.500000 +vt 0.468750 1.000000 +vt 0.437500 0.500000 +vt 0.437500 1.000000 +vt 0.406250 0.500000 +vt 0.406250 1.000000 +vt 0.375000 0.500000 +vt 0.375000 1.000000 +vt 0.343750 0.500000 +vt 0.343750 1.000000 +vt 0.312500 0.500000 +vt 0.312500 1.000000 +vt 0.281250 0.500000 +vt 0.281250 1.000000 +vt 0.250000 0.500000 +vt 0.250000 1.000000 +vt 0.218750 0.500000 +vt 0.218750 1.000000 +vt 0.187500 0.500000 +vt 0.187500 1.000000 +vt 0.156250 0.500000 +vt 0.156250 1.000000 +vt 0.125000 0.500000 +vt 0.125000 1.000000 +vt 0.093750 0.500000 +vt 0.093750 1.000000 +vt 0.062500 0.500000 +vt 0.062500 1.000000 +vt 0.687500 1.000000 +vt 0.718750 1.000000 +vt 0.031250 0.500000 +vt 0.031250 1.000000 +vt 0.000000 0.500000 +vt 0.000000 1.000000 +vt 0.843750 0.500000 +vt 0.812500 0.500000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.593750 1.000000 +vt 0.406250 1.000000 +vt 0.437500 1.000000 +vt 0.125000 1.000000 +vt 0.156250 1.000000 +vt 0.812500 1.000000 +vt 0.843750 1.000000 +vt 0.531250 1.000000 +vt 0.250000 1.000000 +vt 0.281250 1.000000 +vt 0.937500 1.000000 +vt 0.968750 1.000000 +vt 0.656250 1.000000 +vt 0.375000 1.000000 +vt 0.093750 1.000000 +vt 0.781250 1.000000 +vt 0.500000 1.000000 +vt 0.218750 1.000000 +vt 0.906250 1.000000 +vt 0.625000 1.000000 +vt 0.343750 1.000000 +vt 0.062500 1.000000 +vt 0.750000 1.000000 +vt 0.468750 1.000000 +vt 0.187500 1.000000 +vt 0.875000 1.000000 +vt 0.312500 1.000000 +vt 0.031250 1.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.890975 0.466368 +vt 0.894793 0.474776 +vt 0.889672 0.485865 +vt 0.873729 0.481154 +vt 0.968750 1.000000 +vt 0.125000 1.000000 +vt 0.531250 1.000000 +vt 0.937500 1.000000 +vt 0.093750 1.000000 +vt 0.500000 1.000000 +vt 0.906250 1.000000 +vt 0.062500 1.000000 +vt 0.468750 1.000000 +vt 0.875000 1.000000 +vt 0.031250 1.000000 +vt 0.437500 1.000000 +vt 0.843750 1.000000 +vt 0.000000 1.000000 +vt 0.406250 1.000000 +vt 0.812500 1.000000 +vt 0.375000 1.000000 +vt 0.781250 1.000000 +vt 0.343750 1.000000 +vt 0.750000 1.000000 +vt 0.312500 1.000000 +vt 0.718750 1.000000 +vt 0.281250 1.000000 +vt 0.687500 1.000000 +vt 0.250000 1.000000 +vt 0.656250 1.000000 +vt 0.218750 1.000000 +vt 0.625000 1.000000 +vt 0.187500 1.000000 +vt 0.593750 1.000000 +vt 0.156250 1.000000 +vt 0.250000 0.496667 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.255226 0.495129 +vt 0.562500 0.500000 +vt 0.531250 0.500000 +vt 0.281250 0.500000 +vt 0.250000 0.500000 +vt 0.968750 0.500000 +vt 0.937500 0.500000 +vt 0.687500 0.500000 +vt 0.656250 0.500000 +vt 0.406250 0.500000 +vt 0.375000 0.500000 +vt 0.125000 0.500000 +vt 0.093750 0.500000 +vt 0.781250 0.500000 +vt 0.500000 0.500000 +vt 0.218750 0.500000 +vt 0.906250 0.500000 +vt 0.625000 0.500000 +vt 0.343750 0.500000 +vt 0.062500 0.500000 +vt 0.750000 0.500000 +vt 0.468750 0.500000 +vt 0.187500 0.500000 +vt 0.875000 0.500000 +vt 0.593750 0.500000 +vt 0.312500 0.500000 +vt 0.718750 0.500000 +vt 0.437500 0.500000 +vt 0.156250 0.500000 +vt 1.000000 0.500000 +vt 0.750000 0.490000 +vt 0.703179 0.485389 +vt 0.658156 0.471731 +vt 0.616663 0.449553 +vt 0.580295 0.419706 +vt 0.550447 0.383337 +vt 0.528269 0.341844 +vt 0.514612 0.296822 +vt 0.510000 0.250000 +vt 0.514611 0.203179 +vt 0.528269 0.158156 +vt 0.550447 0.116663 +vt 0.580294 0.080294 +vt 0.616663 0.050447 +vt 0.658156 0.028269 +vt 0.703178 0.014612 +vt 0.750000 0.010000 +vt 0.796822 0.014612 +vt 0.841844 0.028269 +vt 0.883337 0.050447 +vt 0.919706 0.080294 +vt 0.949553 0.116663 +vt 0.971731 0.158156 +vt 0.985388 0.203178 +vt 0.990000 0.250000 +vt 0.985388 0.296822 +vt 0.971731 0.341844 +vt 0.949553 0.383337 +vt 0.919706 0.419706 +vt 0.883337 0.449553 +vt 0.841844 0.471731 +vt 0.796822 0.485388 +vt 0.261052 0.490577 +vt 0.268054 0.483184 +vt 0.276765 0.473235 +vt 0.287649 0.461112 +vt 0.301090 0.447281 +vt 0.317371 0.432274 +vt 0.336667 0.416667 +vt 0.359037 0.401060 +vt 0.384423 0.386052 +vt 0.412649 0.372221 +vt 0.443431 0.360098 +vt 0.476388 0.350149 +vt 0.511052 0.342756 +vt 0.546893 0.338204 +vt 0.583333 0.336667 +vt 0.619774 0.338204 +vt 0.655615 0.342756 +vt 0.690279 0.350149 +vt 0.723235 0.360098 +vt 0.754018 0.372221 +vt 0.782244 0.386052 +vt 0.807629 0.401059 +vt 0.830000 0.416667 +vt 0.849296 0.432274 +vt 0.865577 0.447281 +vt 0.879017 0.461112 +vt 0.889902 0.473235 +vt 0.898612 0.483184 +vt 0.905614 0.490577 +vt 0.911441 0.495129 +vt 0.916667 0.496667 +vt 0.825476 0.487824 +vt 0.854131 0.490259 +vt 0.833333 0.493333 +vt 0.791667 0.491667 +vt 0.882786 0.492694 +vt 0.875000 0.495000 +vt 0.857787 0.476443 +vt 0.887156 0.457961 +vt 0.912255 0.433088 +vt 0.904804 0.446470 +vt 0.897353 0.459853 +vt 0.931919 0.402781 +vt 0.914285 0.422224 +vt 0.896651 0.441668 +vt 0.945192 0.368203 +vt 0.918654 0.394563 +vt 0.892115 0.420922 +vt 0.951365 0.330685 +vt 0.917342 0.364548 +vt 0.883319 0.398411 +vt 0.950000 0.291667 +vt 0.910000 0.333333 +vt 0.870000 0.375000 +vt 0.940949 0.252649 +vt 0.896509 0.302119 +vt 0.852069 0.351589 +vt 0.924359 0.215130 +vt 0.876987 0.272104 +vt 0.829616 0.329078 +vt 0.900669 0.180553 +vt 0.851785 0.244442 +vt 0.802901 0.308332 +vt 0.870588 0.150245 +vt 0.821470 0.220196 +vt 0.772353 0.290147 +vt 0.835072 0.125373 +vt 0.786808 0.200298 +vt 0.738543 0.275224 +vt 0.795287 0.106891 +vt 0.748729 0.185513 +vt 0.702172 0.264134 +vt 0.752560 0.095510 +vt 0.708298 0.176408 +vt 0.664036 0.257306 +vt 0.708333 0.091667 +vt 0.666667 0.173333 +vt 0.625000 0.255000 +vt 0.664107 0.095510 +vt 0.625035 0.176408 +vt 0.585964 0.257306 +vt 0.621380 0.106891 +vt 0.584604 0.185513 +vt 0.547828 0.264134 +vt 0.581594 0.125373 +vt 0.546525 0.200298 +vt 0.511457 0.275224 +vt 0.546079 0.150245 +vt 0.511863 0.220196 +vt 0.477647 0.290147 +vt 0.515998 0.180553 +vt 0.481548 0.244442 +vt 0.447099 0.308332 +vt 0.492307 0.215130 +vt 0.456346 0.272104 +vt 0.420384 0.329078 +vt 0.475718 0.252649 +vt 0.436824 0.302119 +vt 0.397931 0.351589 +vt 0.466667 0.291667 +vt 0.423333 0.333333 +vt 0.380000 0.375000 +vt 0.465301 0.330685 +vt 0.415991 0.364548 +vt 0.366681 0.398411 +vt 0.471474 0.368204 +vt 0.414679 0.394563 +vt 0.357885 0.420922 +vt 0.484748 0.402781 +vt 0.419048 0.422225 +vt 0.353349 0.441669 +vt 0.504412 0.433088 +vt 0.428530 0.446470 +vt 0.352647 0.459853 +vt 0.529511 0.457961 +vt 0.442359 0.466368 +vt 0.355207 0.474776 +vt 0.558880 0.476443 +vt 0.459604 0.481154 +vt 0.360328 0.485866 +vt 0.591191 0.487824 +vt 0.479202 0.490259 +vt 0.367214 0.492694 +vt 0.625000 0.491667 +vt 0.500000 0.493333 +vt 0.375000 0.495000 +vt 1.000000 0.500000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 0.968750 0.500000 +vt 0.937500 1.000000 +vt 0.937500 0.500000 +vt 0.906250 1.000000 +vt 0.906250 0.500000 +vt 0.875000 1.000000 +vt 0.875000 0.500000 +vt 0.843750 1.000000 +vt 0.843750 0.500000 +vt 0.812500 1.000000 +vt 0.812500 0.500000 +vt 0.781250 1.000000 +vt 0.781250 0.500000 +vt 0.750000 1.000000 +vt 0.750000 0.500000 +vt 0.718750 1.000000 +vt 0.718750 0.500000 +vt 0.687500 1.000000 +vt 0.687500 0.500000 +vt 0.656250 1.000000 +vt 0.656250 0.500000 +vt 0.625000 1.000000 +vt 0.625000 0.500000 +vt 0.593750 1.000000 +vt 0.593750 0.500000 +vt 0.562500 1.000000 +vt 0.562500 0.500000 +vt 0.531250 1.000000 +vt 0.531250 0.500000 +vt 0.500000 1.000000 +vt 0.500000 0.500000 +vt 0.468750 1.000000 +vt 0.468750 0.500000 +vt 0.437500 1.000000 +vt 0.437500 0.500000 +vt 0.406250 1.000000 +vt 0.406250 0.500000 +vt 0.375000 1.000000 +vt 0.375000 0.500000 +vt 0.343750 1.000000 +vt 0.343750 0.500000 +vt 0.312500 1.000000 +vt 0.312500 0.500000 +vt 0.281250 1.000000 +vt 0.281250 0.500000 +vt 0.250000 1.000000 +vt 0.250000 0.500000 +vt 0.218750 1.000000 +vt 0.218750 0.500000 +vt 0.187500 1.000000 +vt 0.187500 0.500000 +vt 0.156250 1.000000 +vt 0.156250 0.500000 +vt 0.125000 1.000000 +vt 0.125000 0.500000 +vt 0.093750 1.000000 +vt 0.093750 0.500000 +vt 0.062500 1.000000 +vt 0.062500 0.500000 +vt 0.718750 1.000000 +vt 0.687500 1.000000 +vt 0.031250 1.000000 +vt 0.031250 0.500000 +vt 0.000000 1.000000 +vt 0.000000 0.500000 +vt 0.812500 0.500000 +vt 0.843750 0.500000 +vt 0.562500 1.000000 +vt 0.593750 1.000000 +vt 0.562500 1.000000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.156250 1.000000 +vt 0.125000 1.000000 +vt 0.843750 1.000000 +vt 0.812500 1.000000 +vt 0.531250 1.000000 +vt 0.281250 1.000000 +vt 0.250000 1.000000 +vt 0.968750 1.000000 +vt 0.937500 1.000000 +vt 0.656250 1.000000 +vt 0.375000 1.000000 +vt 0.093750 1.000000 +vt 0.781250 1.000000 +vt 0.500000 1.000000 +vt 0.218750 1.000000 +vt 0.906250 1.000000 +vt 0.625000 1.000000 +vt 0.343750 1.000000 +vt 0.062500 1.000000 +vt 0.750000 1.000000 +vt 0.468750 1.000000 +vt 0.187500 1.000000 +vt 0.875000 1.000000 +vt 0.312500 1.000000 +vt 0.031250 1.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.890975 0.466368 +vt 0.873729 0.481154 +vt 0.889672 0.485865 +vt 0.894793 0.474776 +vt 0.968750 1.000000 +vt 0.125000 1.000000 +vt 0.531250 1.000000 +vt 0.937500 1.000000 +vt 0.093750 1.000000 +vt 0.500000 1.000000 +vt 0.906250 1.000000 +vt 0.062500 1.000000 +vt 0.468750 1.000000 +vt 0.875000 1.000000 +vt 0.031250 1.000000 +vt 0.437500 1.000000 +vt 0.843750 1.000000 +vt 0.000000 1.000000 +vt 0.406250 1.000000 +vt 0.812500 1.000000 +vt 0.375000 1.000000 +vt 0.781250 1.000000 +vt 0.343750 1.000000 +vt 0.750000 1.000000 +vt 0.312500 1.000000 +vt 0.718750 1.000000 +vt 0.281250 1.000000 +vt 0.687500 1.000000 +vt 0.250000 1.000000 +vt 0.656250 1.000000 +vt 0.218750 1.000000 +vt 0.625000 1.000000 +vt 0.187500 1.000000 +vt 0.593750 1.000000 +vt 0.156250 1.000000 +vt 0.250000 0.496667 +vt 0.255226 0.495129 +vt 0.031250 0.500000 +vt 0.000000 0.500000 +vt 0.531250 0.500000 +vt 0.562500 0.500000 +vt 0.250000 0.500000 +vt 0.281250 0.500000 +vt 0.937500 0.500000 +vt 0.968750 0.500000 +vt 0.656250 0.500000 +vt 0.687500 0.500000 +vt 0.375000 0.500000 +vt 0.406250 0.500000 +vt 0.093750 0.500000 +vt 0.125000 0.500000 +vt 0.781250 0.500000 +vt 0.500000 0.500000 +vt 0.218750 0.500000 +vt 0.906250 0.500000 +vt 0.625000 0.500000 +vt 0.343750 0.500000 +vt 0.062500 0.500000 +vt 0.750000 0.500000 +vt 0.468750 0.500000 +vt 0.187500 0.500000 +vt 0.875000 0.500000 +vt 0.593750 0.500000 +vt 0.312500 0.500000 +vt 0.718750 0.500000 +vt 0.437500 0.500000 +vt 0.156250 0.500000 +vt 1.000000 0.500000 +vt 0.919706 0.080294 +vt 0.883337 0.050447 +vt 0.883337 0.050447 +vt 0.919706 0.080294 +vt 0.261052 0.490577 +vt 0.268054 0.483184 +vt 0.276765 0.473235 +vt 0.287649 0.461112 +vt 0.301090 0.447281 +vt 0.317371 0.432274 +vt 0.336667 0.416667 +vt 0.359037 0.401060 +vt 0.384423 0.386052 +vt 0.412649 0.372221 +vt 0.443431 0.360098 +vt 0.476388 0.350149 +vt 0.511052 0.342756 +vt 0.546893 0.338204 +vt 0.583333 0.336667 +vt 0.619774 0.338204 +vt 0.655615 0.342756 +vt 0.690279 0.350149 +vt 0.723235 0.360098 +vt 0.754018 0.372221 +vt 0.782244 0.386052 +vt 0.807629 0.401059 +vt 0.830000 0.416667 +vt 0.849296 0.432274 +vt 0.865577 0.447281 +vt 0.879017 0.461112 +vt 0.889902 0.473235 +vt 0.898612 0.483184 +vt 0.905614 0.490577 +vt 0.911441 0.495129 +vt 0.916667 0.496667 +vt 0.825476 0.487824 +vt 0.791667 0.491667 +vt 0.833333 0.493333 +vt 0.854131 0.490259 +vt 0.882786 0.492694 +vt 0.875000 0.495000 +vt 0.857787 0.476443 +vt 0.887156 0.457961 +vt 0.912255 0.433088 +vt 0.904804 0.446470 +vt 0.897353 0.459853 +vt 0.931919 0.402781 +vt 0.914285 0.422224 +vt 0.896651 0.441668 +vt 0.945192 0.368203 +vt 0.918654 0.394563 +vt 0.892115 0.420922 +vt 0.951365 0.330685 +vt 0.917342 0.364548 +vt 0.883319 0.398411 +vt 0.950000 0.291667 +vt 0.910000 0.333333 +vt 0.870000 0.375000 +vt 0.940949 0.252649 +vt 0.896509 0.302119 +vt 0.852069 0.351589 +vt 0.924359 0.215130 +vt 0.876987 0.272104 +vt 0.829616 0.329078 +vt 0.900669 0.180553 +vt 0.851785 0.244442 +vt 0.802901 0.308332 +vt 0.870588 0.150245 +vt 0.821470 0.220196 +vt 0.772353 0.290147 +vt 0.835072 0.125373 +vt 0.786808 0.200298 +vt 0.738543 0.275224 +vt 0.795287 0.106891 +vt 0.748729 0.185513 +vt 0.702172 0.264134 +vt 0.752560 0.095510 +vt 0.708298 0.176408 +vt 0.664036 0.257306 +vt 0.708333 0.091667 +vt 0.666667 0.173333 +vt 0.625000 0.255000 +vt 0.664107 0.095510 +vt 0.625035 0.176408 +vt 0.585964 0.257306 +vt 0.621380 0.106891 +vt 0.584604 0.185513 +vt 0.547828 0.264134 +vt 0.581594 0.125373 +vt 0.546525 0.200298 +vt 0.511457 0.275224 +vt 0.546079 0.150245 +vt 0.511863 0.220196 +vt 0.477647 0.290147 +vt 0.515998 0.180553 +vt 0.481548 0.244442 +vt 0.447099 0.308332 +vt 0.492307 0.215130 +vt 0.456346 0.272104 +vt 0.420384 0.329078 +vt 0.475718 0.252649 +vt 0.436824 0.302119 +vt 0.397931 0.351589 +vt 0.466667 0.291667 +vt 0.423333 0.333333 +vt 0.380000 0.375000 +vt 0.465301 0.330685 +vt 0.415991 0.364548 +vt 0.366681 0.398411 +vt 0.471474 0.368204 +vt 0.414679 0.394563 +vt 0.357885 0.420922 +vt 0.484748 0.402781 +vt 0.419048 0.422225 +vt 0.353349 0.441669 +vt 0.504412 0.433088 +vt 0.428530 0.446470 +vt 0.352647 0.459853 +vt 0.529511 0.457961 +vt 0.442359 0.466368 +vt 0.355207 0.474776 +vt 0.558880 0.476443 +vt 0.459604 0.481154 +vt 0.360328 0.485866 +vt 0.591191 0.487824 +vt 0.479202 0.490259 +vt 0.367214 0.492694 +vt 0.625000 0.491667 +vt 0.500000 0.493333 +vt 0.375000 0.495000 +vt 0.750000 0.490000 +vt 0.703179 0.485389 +vt 0.658156 0.471731 +vt 0.616663 0.449553 +vt 0.580295 0.419706 +vt 0.550447 0.383337 +vt 0.528269 0.341844 +vt 0.514612 0.296822 +vt 0.510000 0.250000 +vt 0.514611 0.203179 +vt 0.528269 0.158156 +vt 0.550447 0.116663 +vt 0.580294 0.080294 +vt 0.616663 0.050447 +vt 0.658156 0.028269 +vt 0.703178 0.014612 +vt 0.750000 0.010000 +vt 0.796822 0.014612 +vt 0.841844 0.028269 +vt 0.949553 0.116663 +vt 0.971731 0.158156 +vt 0.985388 0.203178 +vt 0.990000 0.250000 +vt 0.985388 0.296822 +vt 0.971731 0.341844 +vt 0.949553 0.383337 +vt 0.919706 0.419706 +vt 0.883337 0.449553 +vt 0.841844 0.471731 +vt 0.796822 0.485388 +vt 0.750000 0.490000 +vt 0.796822 0.485388 +vt 0.841844 0.471731 +vt 0.883337 0.449553 +vt 0.919706 0.419706 +vt 0.949553 0.383337 +vt 0.971731 0.341844 +vt 0.985388 0.296822 +vt 0.990000 0.250000 +vt 0.985388 0.203178 +vt 0.971731 0.158156 +vt 0.949553 0.116663 +vt 0.841844 0.028269 +vt 0.796822 0.014612 +vt 0.750000 0.010000 +vt 0.703178 0.014612 +vt 0.658156 0.028269 +vt 0.616663 0.050447 +vt 0.580294 0.080294 +vt 0.550447 0.116663 +vt 0.528269 0.158156 +vt 0.514611 0.203179 +vt 0.510000 0.250000 +vt 0.514612 0.296822 +vt 0.528269 0.341844 +vt 0.550447 0.383337 +vt 0.580295 0.419706 +vt 0.616663 0.449553 +vt 0.658156 0.471731 +vt 0.703179 0.485389 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 0.968750 1.000000 +vt 1.000000 1.000000 +vt 0.937500 0.500000 +vt 0.937500 1.000000 +vt 0.906250 0.500000 +vt 0.906250 1.000000 +vt 0.875000 0.500000 +vt 0.875000 1.000000 +vt 0.843750 0.500000 +vt 0.843750 1.000000 +vt 0.812500 0.500000 +vt 0.812500 1.000000 +vt 0.781250 0.500000 +vt 0.781250 1.000000 +vt 0.750000 0.500000 +vt 0.750000 1.000000 +vt 0.718750 0.500000 +vt 0.718750 1.000000 +vt 0.687500 0.500000 +vt 0.687500 1.000000 +vt 0.656250 0.500000 +vt 0.656250 1.000000 +vt 0.625000 0.500000 +vt 0.625000 1.000000 +vt 0.593750 0.500000 +vt 0.593750 1.000000 +vt 0.562500 0.500000 +vt 0.562500 1.000000 +vt 0.531250 0.500000 +vt 0.531250 1.000000 +vt 0.500000 0.500000 +vt 0.500000 1.000000 +vt 0.468750 0.500000 +vt 0.468750 1.000000 +vt 0.437500 0.500000 +vt 0.437500 1.000000 +vt 0.406250 0.500000 +vt 0.406250 1.000000 +vt 0.375000 0.500000 +vt 0.375000 1.000000 +vt 0.343750 0.500000 +vt 0.343750 1.000000 +vt 0.312500 0.500000 +vt 0.312500 1.000000 +vt 0.281250 0.500000 +vt 0.281250 1.000000 +vt 0.250000 0.500000 +vt 0.250000 1.000000 +vt 0.218750 0.500000 +vt 0.218750 1.000000 +vt 0.187500 0.500000 +vt 0.187500 1.000000 +vt 0.156250 0.500000 +vt 0.156250 1.000000 +vt 0.125000 0.500000 +vt 0.125000 1.000000 +vt 0.093750 0.500000 +vt 0.093750 1.000000 +vt 0.062500 0.500000 +vt 0.062500 1.000000 +vt 0.687500 1.000000 +vt 0.718750 1.000000 +vt 0.031250 0.500000 +vt 0.031250 1.000000 +vt 0.000000 0.500000 +vt 0.000000 1.000000 +vt 0.843750 0.500000 +vt 0.812500 0.500000 +vt 0.562500 1.000000 +vt 0.562500 1.000000 +vt 0.593750 1.000000 +vt 0.406250 1.000000 +vt 0.437500 1.000000 +vt 0.125000 1.000000 +vt 0.156250 1.000000 +vt 0.812500 1.000000 +vt 0.843750 1.000000 +vt 0.531250 1.000000 +vt 0.250000 1.000000 +vt 0.281250 1.000000 +vt 0.937500 1.000000 +vt 0.968750 1.000000 +vt 0.656250 1.000000 +vt 0.375000 1.000000 +vt 0.093750 1.000000 +vt 0.781250 1.000000 +vt 0.500000 1.000000 +vt 0.218750 1.000000 +vt 0.906250 1.000000 +vt 0.625000 1.000000 +vt 0.343750 1.000000 +vt 0.062500 1.000000 +vt 0.750000 1.000000 +vt 0.468750 1.000000 +vt 0.187500 1.000000 +vt 0.875000 1.000000 +vt 0.312500 1.000000 +vt 0.031250 1.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.890975 0.466368 +vt 0.894793 0.474776 +vt 0.889672 0.485865 +vt 0.873729 0.481154 +vt 0.968750 1.000000 +vt 0.125000 1.000000 +vt 0.531250 1.000000 +vt 0.937500 1.000000 +vt 0.093750 1.000000 +vt 0.500000 1.000000 +vt 0.906250 1.000000 +vt 0.062500 1.000000 +vt 0.468750 1.000000 +vt 0.875000 1.000000 +vt 0.031250 1.000000 +vt 0.437500 1.000000 +vt 0.843750 1.000000 +vt 0.000000 1.000000 +vt 0.406250 1.000000 +vt 0.812500 1.000000 +vt 0.375000 1.000000 +vt 0.781250 1.000000 +vt 0.343750 1.000000 +vt 0.750000 1.000000 +vt 0.312500 1.000000 +vt 0.718750 1.000000 +vt 0.281250 1.000000 +vt 0.687500 1.000000 +vt 0.250000 1.000000 +vt 0.656250 1.000000 +vt 0.218750 1.000000 +vt 0.625000 1.000000 +vt 0.187500 1.000000 +vt 0.593750 1.000000 +vt 0.156250 1.000000 +vt 0.250000 0.496667 +vt 0.000000 0.500000 +vt 0.031250 0.500000 +vt 0.255226 0.495129 +vt 0.562500 0.500000 +vt 0.531250 0.500000 +vt 0.281250 0.500000 +vt 0.250000 0.500000 +vt 0.968750 0.500000 +vt 0.937500 0.500000 +vt 0.687500 0.500000 +vt 0.656250 0.500000 +vt 0.406250 0.500000 +vt 0.375000 0.500000 +vt 0.125000 0.500000 +vt 0.093750 0.500000 +vt 0.781250 0.500000 +vt 0.500000 0.500000 +vt 0.218750 0.500000 +vt 0.906250 0.500000 +vt 0.625000 0.500000 +vt 0.343750 0.500000 +vt 0.062500 0.500000 +vt 0.750000 0.500000 +vt 0.468750 0.500000 +vt 0.187500 0.500000 +vt 0.875000 0.500000 +vt 0.593750 0.500000 +vt 0.312500 0.500000 +vt 0.718750 0.500000 +vt 0.437500 0.500000 +vt 0.156250 0.500000 +vt 1.000000 0.500000 +vt 0.919706 0.080294 +vt 0.919706 0.080294 +vt 0.883337 0.050447 +vt 0.883337 0.050447 +vt 0.261052 0.490577 +vt 0.268054 0.483184 +vt 0.276765 0.473235 +vt 0.287649 0.461112 +vt 0.301090 0.447281 +vt 0.317371 0.432274 +vt 0.336667 0.416667 +vt 0.359037 0.401060 +vt 0.384423 0.386052 +vt 0.412649 0.372221 +vt 0.443431 0.360098 +vt 0.476388 0.350149 +vt 0.511052 0.342756 +vt 0.546893 0.338204 +vt 0.583333 0.336667 +vt 0.619774 0.338204 +vt 0.655615 0.342756 +vt 0.690279 0.350149 +vt 0.723235 0.360098 +vt 0.754018 0.372221 +vt 0.782244 0.386052 +vt 0.807629 0.401059 +vt 0.830000 0.416667 +vt 0.849296 0.432274 +vt 0.865577 0.447281 +vt 0.879017 0.461112 +vt 0.889902 0.473235 +vt 0.898612 0.483184 +vt 0.905614 0.490577 +vt 0.911441 0.495129 +vt 0.916667 0.496667 +vt 0.825476 0.487824 +vt 0.854131 0.490259 +vt 0.833333 0.493333 +vt 0.791667 0.491667 +vt 0.882786 0.492694 +vt 0.875000 0.495000 +vt 0.857787 0.476443 +vt 0.887156 0.457961 +vt 0.912255 0.433088 +vt 0.904804 0.446470 +vt 0.897353 0.459853 +vt 0.931919 0.402781 +vt 0.914285 0.422224 +vt 0.896651 0.441668 +vt 0.945192 0.368203 +vt 0.918654 0.394563 +vt 0.892115 0.420922 +vt 0.951365 0.330685 +vt 0.917342 0.364548 +vt 0.883319 0.398411 +vt 0.950000 0.291667 +vt 0.910000 0.333333 +vt 0.870000 0.375000 +vt 0.940949 0.252649 +vt 0.896509 0.302119 +vt 0.852069 0.351589 +vt 0.924359 0.215130 +vt 0.876987 0.272104 +vt 0.829616 0.329078 +vt 0.900669 0.180553 +vt 0.851785 0.244442 +vt 0.802901 0.308332 +vt 0.870588 0.150245 +vt 0.821470 0.220196 +vt 0.772353 0.290147 +vt 0.835072 0.125373 +vt 0.786808 0.200298 +vt 0.738543 0.275224 +vt 0.795287 0.106891 +vt 0.748729 0.185513 +vt 0.702172 0.264134 +vt 0.752560 0.095510 +vt 0.708298 0.176408 +vt 0.664036 0.257306 +vt 0.708333 0.091667 +vt 0.666667 0.173333 +vt 0.625000 0.255000 +vt 0.664107 0.095510 +vt 0.625035 0.176408 +vt 0.585964 0.257306 +vt 0.621380 0.106891 +vt 0.584604 0.185513 +vt 0.547828 0.264134 +vt 0.581594 0.125373 +vt 0.546525 0.200298 +vt 0.511457 0.275224 +vt 0.546079 0.150245 +vt 0.511863 0.220196 +vt 0.477647 0.290147 +vt 0.515998 0.180553 +vt 0.481548 0.244442 +vt 0.447099 0.308332 +vt 0.492307 0.215130 +vt 0.456346 0.272104 +vt 0.420384 0.329078 +vt 0.475718 0.252649 +vt 0.436824 0.302119 +vt 0.397931 0.351589 +vt 0.466667 0.291667 +vt 0.423333 0.333333 +vt 0.380000 0.375000 +vt 0.465301 0.330685 +vt 0.415991 0.364548 +vt 0.366681 0.398411 +vt 0.471474 0.368204 +vt 0.414679 0.394563 +vt 0.357885 0.420922 +vt 0.484748 0.402781 +vt 0.419048 0.422225 +vt 0.353349 0.441669 +vt 0.504412 0.433088 +vt 0.428530 0.446470 +vt 0.352647 0.459853 +vt 0.529511 0.457961 +vt 0.442359 0.466368 +vt 0.355207 0.474776 +vt 0.558880 0.476443 +vt 0.459604 0.481154 +vt 0.360328 0.485866 +vt 0.591191 0.487824 +vt 0.479202 0.490259 +vt 0.367214 0.492694 +vt 0.625000 0.491667 +vt 0.500000 0.493333 +vt 0.375000 0.495000 +vt 0.750000 0.490000 +vt 0.703179 0.485389 +vt 0.658156 0.471731 +vt 0.616663 0.449553 +vt 0.580295 0.419706 +vt 0.550447 0.383337 +vt 0.528269 0.341844 +vt 0.514612 0.296822 +vt 0.510000 0.250000 +vt 0.514611 0.203179 +vt 0.528269 0.158156 +vt 0.550447 0.116663 +vt 0.580294 0.080294 +vt 0.616663 0.050447 +vt 0.658156 0.028269 +vt 0.703178 0.014612 +vt 0.750000 0.010000 +vt 0.796822 0.014612 +vt 0.841844 0.028269 +vt 0.949553 0.116663 +vt 0.971731 0.158156 +vt 0.985388 0.203178 +vt 0.990000 0.250000 +vt 0.985388 0.296822 +vt 0.971731 0.341844 +vt 0.949553 0.383337 +vt 0.919706 0.419706 +vt 0.883337 0.449553 +vt 0.841844 0.471731 +vt 0.796822 0.485388 +vt 0.750000 0.490000 +vt 0.703179 0.485389 +vt 0.658156 0.471731 +vt 0.616663 0.449553 +vt 0.580295 0.419706 +vt 0.550447 0.383337 +vt 0.528269 0.341844 +vt 0.514612 0.296822 +vt 0.510000 0.250000 +vt 0.514611 0.203179 +vt 0.528269 0.158156 +vt 0.550447 0.116663 +vt 0.580294 0.080294 +vt 0.616663 0.050447 +vt 0.658156 0.028269 +vt 0.703178 0.014612 +vt 0.750000 0.010000 +vt 0.796822 0.014612 +vt 0.841844 0.028269 +vt 0.949553 0.116663 +vt 0.971731 0.158156 +vt 0.985388 0.203178 +vt 0.990000 0.250000 +vt 0.985388 0.296822 +vt 0.971731 0.341844 +vt 0.949553 0.383337 +vt 0.919706 0.419706 +vt 0.883337 0.449553 +vt 0.841844 0.471731 +vt 0.796822 0.485388 +vn 0.0000 -0.9952 0.0980 +vn 0.0000 -0.4714 -0.8819 +vn -0.4652 -0.8810 0.0868 +vn -0.1306 -0.6290 -0.7664 +vn 0.0000 -0.6344 -0.7730 +vn 0.0000 -0.9569 0.2903 +vn 0.0000 -0.7730 -0.6344 +vn 0.0000 -0.8819 0.4714 +vn 0.0000 0.0980 0.9952 +vn 0.0000 -0.8819 -0.4714 +vn 0.0000 -0.7730 0.6344 +vn 0.0000 0.2903 0.9569 +vn 0.0000 -0.9569 -0.2903 +vn 0.0000 -0.6344 0.7730 +vn 0.0000 0.4714 0.8819 +vn 0.0000 -0.9952 -0.0980 +vn 0.0000 -0.4714 0.8819 +vn -0.0000 0.6344 0.7730 +vn 0.0000 -0.2903 0.9569 +vn -0.0000 0.7730 0.6344 +vn 0.0000 -0.0980 0.9952 +vn -0.0000 0.8819 0.4714 +vn -0.0000 0.9569 0.2903 +vn -0.0000 0.9952 0.0980 +vn -0.0000 0.9952 -0.0980 +vn -0.0000 0.9569 -0.2903 +vn -0.0000 0.8819 -0.4714 +vn -0.0000 0.7730 -0.6344 +vn -0.0000 0.6344 -0.7730 +vn -0.0000 0.4714 -0.8819 +vn -0.0000 0.2903 -0.9569 +vn -0.0000 0.0980 -0.9952 +vn -0.0000 -0.0980 -0.9952 +vn -0.0000 -0.2903 -0.9569 +vn 0.1948 -0.2847 0.9386 +vn -0.1306 0.9487 0.2878 +vn -0.1306 -0.7664 -0.6290 +vn -0.1306 0.9867 0.0972 +vn -0.1306 -0.8744 -0.4674 +vn -0.1306 0.9867 -0.0972 +vn -0.1306 -0.9487 -0.2878 +vn -0.1306 0.9487 -0.2878 +vn -0.1306 -0.9867 -0.0972 +vn -0.1306 0.8744 -0.4674 +vn -0.1306 -0.9867 0.0972 +vn -0.1306 0.7664 -0.6290 +vn -0.1306 -0.9487 0.2878 +vn -0.1306 0.6290 -0.7664 +vn -0.1306 -0.8744 0.4674 +vn -0.1306 0.4674 -0.8744 +vn -0.1306 0.0972 0.9867 +vn -0.1306 -0.7664 0.6290 +vn -0.1306 0.2878 -0.9487 +vn -0.1306 0.2878 0.9487 +vn -0.1306 -0.6290 0.7664 +vn -0.1306 0.0972 -0.9867 +vn -0.1306 0.4674 0.8744 +vn -0.1306 -0.4674 0.8744 +vn -0.1306 -0.0972 -0.9867 +vn -0.1306 0.6290 0.7664 +vn -0.1306 -0.2878 0.9487 +vn -0.1306 -0.2878 -0.9487 +vn -0.1306 0.7664 0.6290 +vn -0.1306 -0.0972 0.9867 +vn -0.1306 -0.4674 -0.8744 +vn -0.1306 0.8744 0.4674 +vn 0.8252 -0.4366 -0.3583 +vn 0.1948 -0.2847 -0.9386 +vn 0.1948 0.7582 0.6222 +vn 0.1948 -0.0961 0.9761 +vn 0.1948 -0.4624 -0.8650 +vn 0.1948 0.8650 0.4624 +vn 0.1948 -0.6222 -0.7582 +vn 0.1948 0.9386 0.2847 +vn 0.1948 -0.7582 -0.6222 +vn 0.1948 0.9761 0.0961 +vn 0.1948 -0.8650 -0.4624 +vn 0.1948 0.9761 -0.0961 +vn 0.1948 -0.9386 -0.2847 +vn 0.1948 0.9386 -0.2847 +vn 0.1948 -0.9761 -0.0961 +vn 0.1948 0.8650 -0.4624 +vn 0.1948 -0.9761 0.0961 +vn 0.1948 0.7582 -0.6222 +vn 0.1948 -0.9386 0.2847 +vn 0.1948 0.6222 -0.7582 +vn 0.1948 -0.8650 0.4624 +vn 0.1948 0.4624 -0.8650 +vn 0.1948 0.0961 0.9761 +vn 0.1948 -0.7582 0.6222 +vn 0.1948 0.2847 -0.9386 +vn 0.1948 0.2847 0.9386 +vn 0.1948 -0.6222 0.7582 +vn 0.1948 0.0961 -0.9761 +vn 0.1948 0.4624 0.8650 +vn 0.1948 -0.4624 0.8650 +vn 0.1948 -0.0961 -0.9761 +vn 0.1948 0.6222 0.7582 +vn 0.8252 0.5621 0.0554 +vn 0.8252 -0.4981 -0.2662 +vn 0.8252 0.5621 -0.0554 +vn 0.8253 -0.5404 -0.1640 +vn 0.8252 0.5405 -0.1639 +vn 0.8252 -0.5621 -0.0554 +vn 0.8252 0.4981 -0.2662 +vn 0.8252 -0.5621 0.0554 +vn 0.8253 0.4365 -0.3583 +vn 0.8252 -0.5405 0.1639 +vn 0.8252 0.3583 -0.4366 +vn 0.8252 -0.4981 0.2662 +vn 0.8252 0.2663 -0.4981 +vn 0.8252 0.0554 0.5621 +vn 0.8252 -0.4366 0.3583 +vn 0.8252 0.1639 -0.5405 +vn 0.8252 0.1640 0.5405 +vn 0.8252 -0.3583 0.4366 +vn 0.8252 0.0554 -0.5621 +vn 0.8252 0.2662 0.4981 +vn 0.8252 -0.2663 0.4981 +vn 0.8252 -0.0554 -0.5621 +vn 0.8252 0.3583 0.4366 +vn 0.8252 -0.1640 0.5405 +vn 0.8252 -0.1640 -0.5405 +vn 0.8252 0.4366 0.3583 +vn 0.8252 -0.0553 0.5621 +vn 0.8252 -0.2663 -0.4981 +vn 0.8252 0.4981 0.2662 +vn 0.8252 -0.3583 -0.4366 +vn 0.8252 0.5405 0.1639 +vn 0.3943 -0.2668 -0.8794 +vn 0.3943 -0.0901 -0.9145 +vn 0.3943 0.0901 -0.9145 +vn 0.3943 0.2668 -0.8794 +vn 0.3943 0.4332 -0.8105 +vn 0.3943 0.5830 -0.7104 +vn 0.3943 0.7104 -0.5830 +vn 0.3943 0.8105 -0.4332 +vn 0.3943 0.8794 -0.2668 +vn 0.3943 0.9145 -0.0901 +vn 0.3943 0.9145 0.0901 +vn 0.3943 0.8794 0.2668 +vn 0.3943 0.8105 0.4332 +vn 0.3943 -0.0901 0.9145 +vn 0.3943 0.7104 0.5830 +vn 0.3943 -0.2668 0.8794 +vn 0.3943 0.5830 0.7104 +vn 0.3943 -0.4332 0.8105 +vn 0.3943 0.4332 0.8105 +vn 0.3943 -0.5830 0.7104 +vn 0.3943 0.2668 0.8794 +vn 0.3943 -0.7104 0.5830 +vn 0.3943 0.0901 0.9145 +vn 0.3943 -0.8105 0.4332 +vn 0.3943 -0.8794 0.2668 +vn 0.3943 -0.9145 0.0901 +vn 0.3943 -0.9145 -0.0901 +vn 0.3943 -0.8794 -0.2668 +vn 0.3943 -0.8105 -0.4332 +vn 0.3943 -0.7104 -0.5830 +vn 0.3943 -0.5830 -0.7104 +vn 0.3943 -0.4332 -0.8105 +vn -0.3943 -0.4332 -0.8105 +vn 0.4847 -0.4123 -0.7714 +vn 0.5859 -0.3820 -0.7147 +vn -0.4847 -0.4123 -0.7714 +vn -0.3943 -0.5830 -0.7104 +vn 0.4847 -0.5549 -0.6761 +vn 0.5859 -0.5141 -0.6264 +vn -0.4847 -0.5549 -0.6761 +vn -0.3943 -0.7104 -0.5830 +vn 0.4847 -0.6761 -0.5549 +vn 0.5859 -0.6264 -0.5141 +vn -0.4847 -0.6761 -0.5549 +vn -0.3943 -0.8105 -0.4332 +vn 0.4847 -0.7714 -0.4123 +vn 0.5859 -0.7147 -0.3820 +vn -0.4847 -0.7714 -0.4123 +vn -0.3943 -0.8794 -0.2668 +vn 0.4847 -0.8370 -0.2539 +vn 0.5859 -0.7755 -0.2352 +vn -0.4847 -0.8370 -0.2539 +vn -0.3943 -0.9145 -0.0901 +vn 0.4847 -0.8705 -0.0857 +vn 0.5859 -0.8065 -0.0794 +vn -0.4847 -0.8705 -0.0857 +vn -0.3943 -0.9145 0.0901 +vn 0.4847 -0.8705 0.0857 +vn 0.5859 -0.8064 0.0794 +vn 0.5859 -0.8065 0.0794 +vn -0.4847 -0.8705 0.0857 +vn -0.3943 -0.8794 0.2668 +vn 0.4847 -0.8370 0.2539 +vn 0.5859 -0.7755 0.2352 +vn -0.4847 -0.8370 0.2539 +vn -0.3943 -0.8105 0.4332 +vn 0.4847 -0.7714 0.4123 +vn 0.5859 -0.7147 0.3820 +vn -0.4847 -0.7714 0.4123 +vn -0.3943 0.0901 0.9145 +vn 0.4847 0.0857 0.8705 +vn 0.5859 0.0794 0.8065 +vn 0.5859 0.0795 0.8065 +vn -0.4847 0.0857 0.8705 +vn -0.3943 -0.7104 0.5830 +vn 0.4847 -0.6761 0.5549 +vn 0.5859 -0.6264 0.5141 +vn -0.4847 -0.6761 0.5549 +vn -0.3943 0.2668 0.8794 +vn 0.4847 0.2539 0.8370 +vn 0.5859 0.2352 0.7755 +vn -0.4847 0.2539 0.8370 +vn -0.3943 -0.5830 0.7104 +vn 0.4847 -0.5549 0.6761 +vn 0.5859 -0.5141 0.6264 +vn -0.4847 -0.5549 0.6761 +vn -0.3943 0.4332 0.8105 +vn 0.4847 0.4123 0.7714 +vn 0.5859 0.3820 0.7147 +vn -0.4847 0.4123 0.7714 +vn -0.3943 -0.4332 0.8105 +vn 0.4847 -0.4123 0.7714 +vn 0.5859 -0.3820 0.7147 +vn -0.4847 -0.4123 0.7714 +vn -0.3943 0.5830 0.7104 +vn 0.4847 0.5549 0.6761 +vn 0.5859 0.5141 0.6264 +vn -0.4847 0.5549 0.6761 +vn -0.3943 -0.2668 0.8794 +vn 0.4847 -0.2539 0.8370 +vn 0.5859 -0.2352 0.7755 +vn -0.4847 -0.2539 0.8370 +vn -0.3943 0.7104 0.5830 +vn 0.4847 0.6761 0.5549 +vn 0.5859 0.6264 0.5141 +vn -0.4847 0.6761 0.5549 +vn -0.3943 -0.0901 0.9145 +vn 0.4847 -0.0857 0.8705 +vn 0.5859 -0.0794 0.8065 +vn 0.5859 -0.0795 0.8065 +vn -0.4847 -0.0857 0.8705 +vn -0.3943 0.8105 0.4332 +vn 0.4847 0.7714 0.4123 +vn 0.5859 0.7147 0.3820 +vn -0.4847 0.7714 0.4123 +vn -0.3943 0.8794 0.2668 +vn 0.4847 0.8370 0.2539 +vn 0.5859 0.7755 0.2352 +vn -0.4847 0.8370 0.2539 +vn -0.3943 0.9145 0.0901 +vn 0.4847 0.8705 0.0857 +vn 0.5859 0.8065 0.0794 +vn -0.4847 0.8705 0.0857 +vn -0.3943 0.9145 -0.0901 +vn 0.4847 0.8705 -0.0857 +vn 0.5859 0.8065 -0.0794 +vn -0.4847 0.8705 -0.0857 +vn -0.3943 0.8794 -0.2668 +vn 0.4847 0.8370 -0.2539 +vn 0.5859 0.7755 -0.2352 +vn -0.4847 0.8370 -0.2539 +vn -0.3943 0.8105 -0.4332 +vn 0.4847 0.7714 -0.4123 +vn 0.5859 0.7147 -0.3820 +vn -0.4847 0.7714 -0.4123 +vn -0.3943 0.7104 -0.5830 +vn 0.4847 0.6761 -0.5549 +vn 0.5859 0.6264 -0.5141 +vn -0.4847 0.6761 -0.5549 +vn -0.3943 0.5830 -0.7104 +vn 0.4847 0.5549 -0.6761 +vn 0.5859 0.5141 -0.6264 +vn -0.4847 0.5549 -0.6761 +vn -0.3943 0.4332 -0.8105 +vn 0.4847 0.4123 -0.7714 +vn 0.5859 0.3820 -0.7147 +vn -0.4847 0.4123 -0.7714 +vn -0.3943 0.2668 -0.8794 +vn 0.4847 0.2539 -0.8370 +vn 0.5859 0.2352 -0.7755 +vn -0.4847 0.2539 -0.8370 +vn -0.3943 0.0901 -0.9145 +vn 0.4847 0.0857 -0.8705 +vn 0.5859 0.0794 -0.8065 +vn -0.4847 0.0857 -0.8705 +vn -0.3943 -0.0901 -0.9145 +vn 0.4847 -0.0857 -0.8705 +vn 0.5859 -0.0794 -0.8065 +vn -0.4847 -0.0857 -0.8705 +vn -0.3943 -0.2668 -0.8794 +vn 0.4847 -0.2539 -0.8370 +vn 0.5859 -0.2352 -0.7755 +vn -0.4847 -0.2539 -0.8370 +vn -0.5859 -0.2352 -0.7755 +vn -0.5859 -0.0794 -0.8065 +vn -0.5859 0.0794 -0.8065 +vn -0.5859 0.2352 -0.7755 +vn -0.5859 0.3820 -0.7147 +vn -0.5859 0.5141 -0.6264 +vn -0.5859 0.6264 -0.5141 +vn -0.5859 0.7147 -0.3820 +vn -0.5859 0.7755 -0.2352 +vn -0.5859 0.8065 -0.0794 +vn -0.5859 0.8065 0.0794 +vn -0.5859 0.7755 0.2352 +vn -0.5859 0.7147 0.3820 +vn -0.5859 -0.0794 0.8065 +vn -0.5859 0.6264 0.5141 +vn -0.5859 -0.2352 0.7755 +vn -0.5859 0.5141 0.6264 +vn -0.5859 -0.3820 0.7147 +vn -0.5859 0.3820 0.7147 +vn -0.5859 -0.5141 0.6264 +vn -0.5859 0.2352 0.7755 +vn -0.5859 -0.6264 0.5141 +vn -0.5859 0.0794 0.8065 +vn -0.5859 -0.7147 0.3820 +vn -0.5859 -0.7755 0.2352 +vn -0.5859 -0.8065 0.0794 +vn -0.5859 -0.8064 -0.0794 +vn -0.5859 -0.7755 -0.2352 +vn -0.5859 -0.7147 -0.3820 +vn -0.5859 -0.6264 -0.5141 +vn -0.5859 -0.5141 -0.6264 +vn -0.5859 -0.3820 -0.7147 +vn -0.5859 -0.2353 -0.7755 +vn -0.5859 -0.8065 -0.0794 +vn -0.5859 0.0794 -0.8064 +vn -0.5860 0.8064 -0.0794 +vn -0.5859 0.8064 0.0794 +vn -0.5860 -0.8064 -0.0794 +vn -0.5860 -0.7755 -0.2352 +vn -0.6480 -0.7580 -0.0747 +vn -0.6480 -0.7288 -0.2211 +vn -0.6480 -0.6717 -0.3590 +vn -0.6480 -0.5888 -0.4832 +vn -0.6480 -0.4832 -0.5888 +vn -0.6480 -0.3590 -0.6717 +vn -0.6480 -0.2211 -0.7288 +vn -0.6480 -0.0747 -0.7580 +vn -0.6480 0.0747 -0.7580 +vn -0.6480 0.2211 -0.7288 +vn -0.6480 0.3590 -0.6717 +vn -0.6480 0.4832 -0.5888 +vn -0.6480 0.5888 -0.4832 +vn -0.6480 0.6717 -0.3590 +vn -0.6480 0.7288 -0.2211 +vn -0.6480 0.7580 -0.0747 +vn -0.6480 0.7580 0.0747 +vn -0.6480 0.7288 0.2211 +vn -0.6480 0.6717 0.3590 +vn -0.6480 -0.0747 0.7580 +vn -0.6480 0.5888 0.4832 +vn -0.6480 -0.2211 0.7288 +vn -0.6480 0.4832 0.5888 +vn -0.6480 -0.3590 0.6717 +vn -0.6480 0.3590 0.6717 +vn -0.6480 -0.4832 0.5888 +vn -0.6480 0.2211 0.7288 +vn -0.6480 -0.5888 0.4832 +vn -0.6480 0.0747 0.7580 +vn -0.6480 -0.6717 0.3590 +vn -0.6480 -0.7288 0.2211 +vn -0.6480 -0.7580 0.0747 +vn 0.6480 -0.7580 0.0747 +vn -0.2632 -0.9601 0.0946 +vn -0.5813 -0.8097 0.0798 +vn -0.5814 -0.8097 0.0798 +vn 0.2632 -0.9601 0.0946 +vn 0.6480 -0.7289 0.2211 +vn -0.2632 -0.9232 0.2801 +vn -0.5813 -0.7786 0.2362 +vn 0.2632 -0.9232 0.2801 +vn 0.6480 -0.6717 0.3590 +vn -0.2632 -0.8508 0.4548 +vn -0.5813 -0.7176 0.3836 +vn 0.2632 -0.8508 0.4548 +vn 0.6480 0.0747 0.7580 +vn -0.2632 0.0946 0.9601 +vn -0.5813 0.0798 0.8097 +vn -0.5814 0.0798 0.8097 +vn 0.2632 0.0946 0.9601 +vn 0.6480 -0.5888 0.4832 +vn -0.2632 -0.7458 0.6120 +vn -0.5813 -0.6290 0.5162 +vn 0.2632 -0.7458 0.6120 +vn 0.6480 0.2211 0.7289 +vn -0.2632 0.2801 0.9232 +vn -0.5813 0.2362 0.7786 +vn 0.2632 0.2801 0.9232 +vn 0.6480 -0.4832 0.5888 +vn -0.2632 -0.6120 0.7458 +vn -0.5813 -0.5162 0.6290 +vn 0.2632 -0.6120 0.7458 +vn 0.6480 0.3590 0.6717 +vn -0.2632 0.4548 0.8508 +vn -0.5813 0.3836 0.7176 +vn 0.2632 0.4548 0.8508 +vn 0.6480 -0.3590 0.6717 +vn -0.2632 -0.4548 0.8508 +vn -0.5813 -0.3836 0.7176 +vn 0.2632 -0.4548 0.8508 +vn 0.6480 0.4832 0.5888 +vn -0.2632 0.6120 0.7458 +vn -0.5813 0.5162 0.6290 +vn 0.2632 0.6120 0.7458 +vn 0.6480 -0.2211 0.7289 +vn -0.2632 -0.2800 0.9232 +vn -0.5813 -0.2362 0.7786 +vn 0.2632 -0.2800 0.9232 +vn 0.6480 0.5888 0.4832 +vn -0.2632 0.7458 0.6120 +vn -0.5813 0.6290 0.5162 +vn 0.2632 0.7458 0.6120 +vn 0.6480 -0.0747 0.7580 +vn -0.2632 -0.0946 0.9601 +vn -0.5813 -0.0798 0.8097 +vn -0.5814 -0.0798 0.8097 +vn 0.2632 -0.0946 0.9601 +vn 0.6480 0.6717 0.3590 +vn -0.2632 0.8508 0.4548 +vn -0.5813 0.7176 0.3836 +vn 0.2632 0.8508 0.4548 +vn 0.6480 0.7289 0.2211 +vn -0.2632 0.9232 0.2800 +vn -0.5813 0.7786 0.2362 +vn 0.2632 0.9232 0.2801 +vn 0.6480 0.7580 0.0747 +vn -0.2632 0.9601 0.0946 +vn -0.5813 0.8097 0.0798 +vn 0.2632 0.9601 0.0946 +vn 0.6480 0.7580 -0.0747 +vn -0.2632 0.9601 -0.0946 +vn -0.5813 0.8097 -0.0798 +vn 0.2632 0.9601 -0.0946 +vn 0.6480 0.7289 -0.2211 +vn -0.2632 0.9232 -0.2800 +vn -0.5813 0.7786 -0.2362 +vn 0.2632 0.9232 -0.2801 +vn 0.6480 0.6717 -0.3590 +vn -0.2632 0.8508 -0.4548 +vn -0.5813 0.7176 -0.3836 +vn 0.2632 0.8508 -0.4548 +vn 0.6480 0.5888 -0.4832 +vn -0.2632 0.7458 -0.6120 +vn -0.5813 0.6290 -0.5162 +vn 0.2632 0.7458 -0.6120 +vn 0.6480 0.4832 -0.5888 +vn -0.2632 0.6120 -0.7458 +vn -0.5813 0.5162 -0.6290 +vn 0.2632 0.6120 -0.7458 +vn 0.6480 0.3590 -0.6717 +vn -0.2632 0.4548 -0.8508 +vn -0.5813 0.3836 -0.7176 +vn 0.2632 0.4548 -0.8508 +vn 0.6480 0.2211 -0.7289 +vn -0.2632 0.2800 -0.9232 +vn -0.5814 0.2362 -0.7786 +vn 0.2632 0.2800 -0.9232 +vn 0.6480 0.0747 -0.7580 +vn -0.2632 0.0946 -0.9601 +vn -0.5814 0.0798 -0.8097 +vn 0.2632 0.0946 -0.9601 +vn 0.6480 -0.0747 -0.7580 +vn -0.2632 -0.0946 -0.9601 +vn -0.5813 -0.0798 -0.8097 +vn 0.2632 -0.0946 -0.9601 +vn 0.6480 -0.2211 -0.7289 +vn -0.2632 -0.2801 -0.9232 +vn -0.5814 -0.2362 -0.7786 +vn -0.5813 -0.2362 -0.7786 +vn 0.2632 -0.2801 -0.9232 +vn 0.6480 -0.3590 -0.6717 +vn -0.2632 -0.4548 -0.8508 +vn -0.5813 -0.3836 -0.7176 +vn 0.2632 -0.4548 -0.8508 +vn 0.6480 -0.4832 -0.5888 +vn -0.2632 -0.6120 -0.7458 +vn -0.5814 -0.5162 -0.6290 +vn -0.5813 -0.5162 -0.6290 +vn 0.2632 -0.6120 -0.7458 +vn 0.6480 -0.5888 -0.4832 +vn -0.2632 -0.7458 -0.6120 +vn -0.5813 -0.6290 -0.5162 +vn 0.2632 -0.7458 -0.6120 +vn 0.6480 -0.6717 -0.3590 +vn -0.2632 -0.8508 -0.4548 +vn -0.5813 -0.7176 -0.3836 +vn 0.2632 -0.8508 -0.4548 +vn 0.6480 -0.7289 -0.2211 +vn -0.2632 -0.9232 -0.2800 +vn -0.5813 -0.7786 -0.2362 +vn 0.2632 -0.9232 -0.2800 +vn 0.6480 -0.7580 -0.0747 +vn -0.2632 -0.9601 -0.0946 +vn -0.5813 -0.8097 -0.0798 +vn -0.5814 -0.8097 -0.0798 +vn 0.2632 -0.9601 -0.0946 +vn 0.5813 -0.8097 -0.0797 +vn 0.5813 -0.7786 -0.2362 +vn 0.5813 -0.7176 -0.3836 +vn 0.5813 -0.6290 -0.5162 +vn 0.5813 -0.5162 -0.6290 +vn 0.5813 -0.3836 -0.7176 +vn 0.5813 -0.2362 -0.7786 +vn 0.5813 -0.0798 -0.8097 +vn 0.5813 0.0798 -0.8097 +vn 0.5813 0.2362 -0.7786 +vn 0.5813 0.3836 -0.7176 +vn 0.5813 0.5162 -0.6290 +vn 0.5813 0.6290 -0.5162 +vn 0.5813 0.7176 -0.3836 +vn 0.5813 0.7786 -0.2362 +vn 0.5814 0.8097 -0.0798 +vn 0.5813 0.8097 0.0798 +vn 0.5813 0.7786 0.2362 +vn 0.5814 0.7176 0.3836 +vn 0.5813 -0.0797 0.8097 +vn 0.5813 0.6290 0.5162 +vn 0.5813 -0.2362 0.7786 +vn 0.5813 0.5162 0.6290 +vn 0.5813 -0.3836 0.7176 +vn 0.5813 0.3836 0.7176 +vn 0.5813 -0.5162 0.6290 +vn 0.5813 0.2362 0.7786 +vn 0.5813 -0.6290 0.5162 +vn 0.5813 0.0797 0.8097 +vn 0.5814 -0.7176 0.3836 +vn 0.5814 -0.7786 0.2362 +vn 0.5813 -0.8097 0.0797 +vn 0.5813 0.8097 -0.0798 +vn 0.5813 0.7176 0.3836 +vn 0.5813 -0.7176 0.3836 +vn 0.5813 -0.7786 0.2362 +vn -0.1725 -0.9426 0.2859 +vn -0.4652 0.6843 -0.5616 +vn -0.4652 -0.8471 0.2570 +vn -0.4652 0.5616 -0.6843 +vn -0.4652 -0.7807 0.4173 +vn -0.4652 0.4173 -0.7807 +vn -0.4652 0.0868 0.8810 +vn -0.4652 -0.6843 0.5616 +vn -0.4652 0.2570 -0.8471 +vn -0.4652 0.2570 0.8471 +vn -0.4652 -0.5616 0.6843 +vn -0.4652 0.0868 -0.8810 +vn -0.4652 0.4173 0.7807 +vn -0.4652 -0.4173 0.7807 +vn -0.4652 -0.0868 -0.8810 +vn -0.4652 0.5616 0.6843 +vn -0.4652 -0.2570 0.8471 +vn -0.4652 -0.2570 -0.8471 +vn -0.4652 0.6843 0.5616 +vn -0.4652 -0.0868 0.8810 +vn -0.4652 -0.4173 -0.7807 +vn -0.4652 0.7807 0.4173 +vn -0.4652 -0.5616 -0.6843 +vn -0.4652 0.8471 0.2570 +vn -0.4652 -0.6843 -0.5616 +vn -0.4652 0.8810 0.0868 +vn -0.4652 -0.7807 -0.4173 +vn -0.4652 0.8810 -0.0868 +vn -0.4652 -0.8471 -0.2570 +vn -0.4652 0.8471 -0.2570 +vn -0.4652 -0.8810 -0.0868 +vn -0.4652 0.7807 -0.4173 +vn 0.0000 0.0000 1.0000 +vn -0.1725 0.6249 -0.7614 +vn -0.1725 -0.8687 0.4643 +vn -0.1725 0.4643 -0.8687 +vn -0.1725 0.0965 0.9803 +vn -0.1725 -0.7614 0.6249 +vn -0.1725 0.2859 -0.9426 +vn -0.1725 0.2859 0.9426 +vn -0.1725 -0.6249 0.7614 +vn -0.1725 0.0965 -0.9803 +vn -0.1725 0.4643 0.8687 +vn -0.1725 -0.4643 0.8687 +vn -0.1725 -0.0965 -0.9803 +vn -0.1725 0.6249 0.7614 +vn -0.1725 -0.2859 0.9426 +vn -0.1725 -0.2859 -0.9426 +vn -0.1725 0.7614 0.6249 +vn -0.1725 -0.0965 0.9803 +vn -0.1725 -0.4643 -0.8687 +vn -0.1725 0.8687 0.4643 +vn -0.1725 -0.6249 -0.7614 +vn -0.1725 0.9426 0.2859 +vn -0.1725 -0.7614 -0.6249 +vn -0.1725 0.9803 0.0965 +vn -0.1725 -0.8687 -0.4643 +vn -0.1725 0.9803 -0.0965 +vn -0.1725 -0.9426 -0.2859 +vn -0.1725 0.9426 -0.2859 +vn -0.1725 -0.9803 -0.0965 +vn -0.1725 0.8687 -0.4643 +vn -0.1725 -0.9803 0.0965 +vn -0.1725 0.7614 -0.6249 +vn -0.0098 0.7730 -0.6344 +vn -0.0098 -0.9951 0.0980 +vn -0.0098 0.8819 -0.4714 +vn -0.0098 -0.9951 -0.0980 +vn -0.0098 0.9569 -0.2903 +vn -0.0098 -0.9569 -0.2903 +vn -0.0098 0.9951 -0.0980 +vn -0.0098 -0.8819 -0.4714 +vn -0.0098 0.9951 0.0980 +vn -0.0098 -0.7730 -0.6344 +vn -0.0098 0.9569 0.2903 +vn -0.0098 -0.6344 -0.7730 +vn -0.0098 0.8819 0.4714 +vn -0.0098 -0.4714 -0.8819 +vn -0.0098 -0.0980 0.9951 +vn -0.0098 0.7730 0.6344 +vn -0.0098 -0.2903 -0.9569 +vn -0.0098 -0.2903 0.9569 +vn -0.0098 0.6344 0.7730 +vn -0.0098 -0.0980 -0.9951 +vn -0.0098 -0.4714 0.8819 +vn -0.0098 0.4714 0.8819 +vn -0.0098 0.0980 -0.9951 +vn -0.0098 -0.6344 0.7730 +vn -0.0098 0.2903 0.9569 +vn -0.0098 0.2903 -0.9569 +vn -0.0098 -0.7730 0.6344 +vn -0.0098 0.0980 0.9951 +vn -0.0098 0.4714 -0.8819 +vn -0.0098 -0.8819 0.4714 +vn -0.0098 0.6344 -0.7730 +vn -0.0098 -0.9569 0.2903 +vn 0.2072 0.7562 -0.6206 +vn 0.2072 -0.9736 0.0959 +vn 0.2072 0.8628 -0.4612 +vn 0.2072 -0.9736 -0.0959 +vn 0.2072 0.9362 -0.2840 +vn 0.2072 -0.9362 -0.2840 +vn 0.2072 0.9736 -0.0959 +vn 0.2072 -0.8628 -0.4612 +vn 0.2072 0.9736 0.0959 +vn 0.2072 -0.7562 -0.6206 +vn 0.2072 0.9362 0.2840 +vn 0.2072 -0.6206 -0.7562 +vn 0.2072 0.8628 0.4612 +vn 0.2072 -0.4612 -0.8628 +vn 0.2072 -0.0959 0.9736 +vn 0.2072 0.7562 0.6206 +vn 0.2072 -0.2840 -0.9362 +vn 0.2072 -0.2840 0.9362 +vn 0.2072 0.6206 0.7562 +vn 0.2072 -0.0959 -0.9736 +vn 0.2072 -0.4612 0.8628 +vn 0.2072 0.4612 0.8628 +vn 0.2072 0.0959 -0.9736 +vn 0.2072 -0.6206 0.7562 +vn 0.2072 0.2840 0.9362 +vn 0.2072 0.2840 -0.9362 +vn 0.2072 -0.7562 0.6206 +vn 0.2072 0.0959 0.9736 +vn 0.2072 0.4612 -0.8628 +vn 0.2072 -0.8628 0.4612 +vn 0.2072 0.6206 -0.7562 +vn 0.2072 -0.9362 0.2840 +vn -0.0596 -0.9552 0.2898 +vn -0.0596 0.6333 -0.7716 +vn -0.0596 -0.8804 0.4706 +vn -0.0596 0.4706 -0.8804 +vn -0.0596 0.0978 0.9934 +vn -0.0596 -0.7716 0.6333 +vn -0.0596 0.2898 -0.9552 +vn -0.0596 0.2898 0.9552 +vn -0.0596 -0.6333 0.7716 +vn -0.0596 0.0978 -0.9934 +vn -0.0596 0.4706 0.8804 +vn -0.0596 -0.4706 0.8804 +vn -0.0596 -0.0978 -0.9934 +vn -0.0596 0.6333 0.7716 +vn -0.0596 -0.2898 0.9552 +vn -0.0596 -0.2898 -0.9552 +vn -0.0596 0.7716 0.6333 +vn -0.0596 -0.0978 0.9934 +vn -0.0596 -0.4706 -0.8804 +vn -0.0596 0.8804 0.4706 +vn -0.0596 -0.6333 -0.7716 +vn -0.0596 0.9552 0.2898 +vn -0.0596 -0.7716 -0.6333 +vn -0.0596 0.9934 0.0978 +vn -0.0596 -0.8804 -0.4706 +vn -0.0596 0.9934 -0.0978 +vn -0.0596 -0.9552 -0.2898 +vn -0.0596 0.9552 -0.2898 +vn -0.0596 -0.9934 -0.0978 +vn -0.0596 0.8804 -0.4706 +vn -0.0596 -0.9934 0.0978 +vn -0.0596 0.7716 -0.6333 +vn -0.3698 -0.8891 0.2697 +vn -0.3698 0.5894 -0.7182 +vn -0.3698 -0.8194 0.4380 +vn -0.3698 0.4380 -0.8194 +vn -0.3698 0.0911 0.9246 +vn -0.3698 -0.7182 0.5894 +vn -0.3698 0.2697 -0.8891 +vn -0.3698 0.2697 0.8891 +vn -0.3698 -0.5894 0.7182 +vn -0.3698 0.0911 -0.9246 +vn -0.3698 0.4380 0.8194 +vn -0.3698 -0.4380 0.8194 +vn -0.3698 -0.0911 -0.9246 +vn -0.3698 0.5894 0.7182 +vn -0.3698 -0.2697 0.8891 +vn -0.3698 -0.2697 -0.8891 +vn -0.3698 0.7182 0.5894 +vn -0.3698 -0.0911 0.9246 +vn -0.3698 -0.4380 -0.8194 +vn -0.3698 0.8194 0.4380 +vn -0.3698 -0.5894 -0.7182 +vn -0.3698 0.8891 0.2697 +vn -0.3698 -0.7182 -0.5894 +vn -0.3698 0.9246 0.0911 +vn -0.3698 -0.8194 -0.4380 +vn -0.3698 0.9246 -0.0911 +vn -0.3698 -0.8891 -0.2697 +vn -0.3698 0.8891 -0.2697 +vn -0.3698 -0.9246 -0.0911 +vn -0.3698 0.8194 -0.4380 +vn -0.3698 -0.9246 0.0911 +vn -0.3698 0.7182 -0.5894 +vn -0.0191 0.7729 -0.6343 +vn 0.4373 0.6952 -0.5705 +vn 0.4880 0.6747 -0.5537 +vn -0.4880 0.6747 -0.5537 +vn 0.5006 0.6692 -0.5492 +vn -0.4978 0.6704 -0.5502 +vn -0.0191 -0.9950 0.0980 +vn 0.4373 -0.8950 0.0882 +vn 0.4880 -0.8686 0.0856 +vn -0.4880 -0.8686 0.0856 +vn 0.4806 -0.8727 0.0859 +vn -0.4778 -0.8742 0.0861 +vn 0.4880 -0.8686 0.0855 +vn -0.0191 0.8818 -0.4713 +vn 0.4373 0.7931 -0.4239 +vn 0.4880 0.7698 -0.4115 +vn -0.4880 0.7698 -0.4115 +vn 0.5001 0.7637 -0.4082 +vn -0.4974 0.7651 -0.4090 +vn -0.4880 0.7698 -0.4114 +vn -0.0191 -0.9950 -0.0980 +vn 0.4373 -0.8950 -0.0881 +vn 0.4880 -0.8686 -0.0856 +vn -0.4880 -0.8686 -0.0856 +vn 0.4822 -0.8719 -0.0859 +vn -0.4794 -0.8733 -0.0860 +vn -0.0191 0.9568 -0.2902 +vn 0.4373 0.8606 -0.2611 +vn 0.4880 0.8352 -0.2534 +vn -0.4880 0.8352 -0.2534 +vn -0.4880 0.8353 -0.2534 +vn 0.4993 0.8291 -0.2515 +vn -0.4965 0.8306 -0.2520 +vn 0.4880 0.8353 -0.2534 +vn -0.0191 -0.9568 -0.2902 +vn 0.4373 -0.8606 -0.2611 +vn 0.4880 -0.8353 -0.2534 +vn -0.4880 -0.8352 -0.2534 +vn 0.4880 -0.8352 -0.2534 +vn -0.4880 -0.8353 -0.2534 +vn 0.4840 -0.8374 -0.2540 +vn -0.4813 -0.8388 -0.2544 +vn -0.0191 0.9950 -0.0980 +vn 0.4373 0.8950 -0.0882 +vn 0.4880 0.8686 -0.0856 +vn -0.4880 0.8686 -0.0856 +vn 0.4981 0.8630 -0.0850 +vn -0.4953 0.8645 -0.0851 +vn -0.0191 -0.8818 -0.4713 +vn 0.4373 -0.7931 -0.4239 +vn 0.4880 -0.7698 -0.4115 +vn -0.4880 -0.7698 -0.4115 +vn 0.4880 -0.7698 -0.4114 +vn 0.4861 -0.7707 -0.4120 +vn -0.4834 -0.7720 -0.4127 +vn -0.4880 -0.7698 -0.4114 +vn -0.0191 0.9950 0.0980 +vn 0.4373 0.8950 0.0882 +vn 0.4880 0.8686 0.0856 +vn -0.4880 0.8686 0.0856 +vn 0.4965 0.8638 0.0851 +vn -0.4938 0.8654 0.0852 +vn -0.0191 -0.7729 -0.6343 +vn 0.4373 -0.6952 -0.5705 +vn 0.4880 -0.6747 -0.5537 +vn -0.4880 -0.6747 -0.5537 +vn 0.4883 -0.6746 -0.5536 +vn -0.4856 -0.6758 -0.5546 +vn -0.0191 0.9568 0.2902 +vn 0.4373 0.8606 0.2611 +vn 0.4880 0.8353 0.2534 +vn -0.4880 0.8352 0.2534 +vn 0.4880 0.8352 0.2534 +vn -0.4880 0.8353 0.2534 +vn 0.4947 0.8316 0.2523 +vn -0.4920 0.8331 0.2527 +vn -0.0191 -0.6343 -0.7729 +vn 0.4373 -0.5705 -0.6952 +vn 0.4880 -0.5537 -0.6747 +vn -0.4880 -0.5537 -0.6747 +vn 0.4905 -0.5528 -0.6736 +vn -0.4878 -0.5538 -0.6748 +vn -0.0191 0.8818 0.4713 +vn 0.4373 0.7931 0.4239 +vn 0.4880 0.7698 0.4115 +vn -0.4880 0.7698 0.4115 +vn 0.4927 0.7675 0.4102 +vn -0.4899 0.7688 0.4109 +vn 0.4880 0.7698 0.4114 +vn -0.4880 0.7698 0.4114 +vn -0.0191 -0.4713 -0.8818 +vn 0.4373 -0.4239 -0.7931 +vn 0.4880 -0.4115 -0.7698 +vn -0.4880 -0.4115 -0.7698 +vn 0.4927 -0.4102 -0.7675 +vn -0.4899 -0.4109 -0.7688 +vn -0.4880 -0.4114 -0.7698 +vn -0.0191 -0.0980 0.9950 +vn 0.4373 -0.0881 0.8950 +vn 0.4880 -0.0856 0.8686 +vn -0.4880 -0.0856 0.8686 +vn 0.4806 -0.0860 0.8727 +vn -0.4778 -0.0861 0.8742 +vn -0.4880 -0.0855 0.8686 +vn -0.0191 0.7729 0.6343 +vn 0.4373 0.6952 0.5705 +vn 0.4880 0.6747 0.5537 +vn -0.4880 0.6747 0.5537 +vn 0.4905 0.6736 0.5528 +vn -0.4878 0.6748 0.5538 +vn -0.0191 -0.2902 -0.9568 +vn 0.4373 -0.2611 -0.8606 +vn 0.4880 -0.2534 -0.8353 +vn -0.4880 -0.2534 -0.8353 +vn 0.4880 -0.2534 -0.8352 +vn 0.4947 -0.2523 -0.8316 +vn -0.4920 -0.2527 -0.8331 +vn -0.4880 -0.2534 -0.8352 +vn -0.0191 -0.2902 0.9568 +vn 0.4373 -0.2611 0.8606 +vn 0.4880 -0.2534 0.8352 +vn -0.4880 -0.2534 0.8352 +vn -0.4880 -0.2534 0.8353 +vn 0.4793 -0.2548 0.8399 +vn -0.4766 -0.2552 0.8413 +vn 0.4880 -0.2534 0.8353 +vn -0.0191 0.6343 0.7729 +vn 0.4373 0.5705 0.6952 +vn 0.4880 0.5537 0.6747 +vn -0.4880 0.5537 0.6747 +vn 0.4883 0.5536 0.6746 +vn -0.4856 0.5546 0.6758 +vn -0.0191 -0.0980 -0.9950 +vn 0.4373 -0.0881 -0.8950 +vn 0.4880 -0.0856 -0.8686 +vn -0.4880 -0.0856 -0.8686 +vn 0.4965 -0.0851 -0.8638 +vn -0.4938 -0.0852 -0.8654 +vn -0.0191 -0.4713 0.8818 +vn 0.4373 -0.4239 0.7931 +vn 0.4880 -0.4114 0.7698 +vn -0.4880 -0.4115 0.7698 +vn -0.4880 -0.4114 0.7698 +vn 0.4784 -0.4139 0.7744 +vn -0.4757 -0.4146 0.7757 +vn 0.4880 -0.4115 0.7698 +vn -0.0191 0.4713 0.8818 +vn 0.4373 0.4239 0.7931 +vn 0.4880 0.4114 0.7698 +vn -0.4880 0.4115 0.7698 +vn 0.4861 0.4120 0.7707 +vn -0.4834 0.4127 0.7720 +vn 0.4880 0.4115 0.7698 +vn -0.4880 0.4114 0.7698 +vn -0.0191 0.0980 -0.9950 +vn 0.4373 0.0881 -0.8950 +vn 0.4880 0.0856 -0.8686 +vn -0.4880 0.0856 -0.8686 +vn 0.4981 0.0850 -0.8630 +vn -0.4953 0.0851 -0.8645 +vn -0.4880 0.0855 -0.8686 +vn -0.0191 -0.6343 0.7729 +vn 0.4373 -0.5705 0.6952 +vn 0.4880 -0.5537 0.6747 +vn -0.4880 -0.5537 0.6747 +vn 0.4780 -0.5572 0.6790 +vn -0.4744 -0.5567 0.6819 +vn 0.4904 -0.5577 0.6697 +vn -0.0191 0.2902 0.9568 +vn 0.4373 0.2611 0.8606 +vn 0.4880 0.2534 0.8352 +vn -0.4880 0.2534 0.8352 +vn -0.4880 0.2534 0.8353 +vn 0.4840 0.2540 0.8374 +vn -0.4813 0.2544 0.8388 +vn 0.4880 0.2534 0.8353 +vn -0.0191 0.2902 -0.9568 +vn 0.4373 0.2611 -0.8606 +vn 0.4880 0.2534 -0.8352 +vn -0.4880 0.2534 -0.8353 +vn 0.4993 0.2515 -0.8291 +vn -0.4965 0.2520 -0.8306 +vn 0.4880 0.2534 -0.8353 +vn -0.4880 0.2534 -0.8352 +vn -0.0191 -0.7729 0.6343 +vn 0.4373 -0.6952 0.5705 +vn 0.4880 -0.6747 0.5537 +vn -0.4880 -0.6747 0.5537 +vn 0.4780 -0.6790 0.5572 +vn -0.4731 -0.6846 0.5545 +vn 0.4892 -0.6722 0.5557 +vn -0.0191 0.0980 0.9950 +vn 0.4373 0.0882 0.8950 +vn 0.4880 0.0856 0.8686 +vn -0.4880 0.0856 0.8686 +vn 0.4880 0.0855 0.8686 +vn 0.4822 0.0859 0.8719 +vn -0.4794 0.0860 0.8734 +vn -0.4880 0.0855 0.8686 +vn -0.0191 0.4713 -0.8818 +vn 0.4373 0.4239 -0.7931 +vn 0.4880 0.4114 -0.7698 +vn -0.4880 0.4115 -0.7698 +vn 0.4880 0.4115 -0.7698 +vn 0.5001 0.4082 -0.7637 +vn -0.4974 0.4090 -0.7651 +vn -0.4880 0.4114 -0.7698 +vn -0.0191 -0.8818 0.4713 +vn 0.4373 -0.7931 0.4239 +vn 0.4880 -0.7698 0.4115 +vn -0.4880 -0.7698 0.4115 +vn 0.4784 -0.7744 0.4139 +vn -0.4757 -0.7757 0.4146 +vn -0.4880 -0.7698 0.4114 +vn -0.0191 0.6343 -0.7729 +vn 0.4373 0.5705 -0.6952 +vn 0.4880 0.5537 -0.6747 +vn -0.4880 0.5537 -0.6747 +vn 0.5006 0.5492 -0.6692 +vn -0.4978 0.5502 -0.6704 +vn -0.0191 -0.9568 0.2902 +vn 0.4373 -0.8606 0.2611 +vn 0.4880 -0.8352 0.2534 +vn -0.4880 -0.8352 0.2534 +vn -0.4880 -0.8353 0.2534 +vn 0.4793 -0.8399 0.2548 +vn -0.4766 -0.8413 0.2552 +vn -0.4880 -0.8353 0.2533 +vn -0.0993 -0.0975 -0.9903 +vn -0.0920 -0.2891 -0.9529 +vn -0.0775 -0.4700 -0.8793 +vn -0.0564 -0.6334 -0.7718 +vn -0.0294 -0.7727 -0.6341 +vn 0.0024 -0.8819 -0.4714 +vn 0.0377 -0.9563 -0.2901 +vn 0.0750 -0.9924 -0.0977 +vn 0.1127 -0.9888 0.0974 +vn 0.1492 -0.9462 0.2870 +vn 0.1831 -0.8670 0.4634 +vn 0.2130 -0.7553 0.6198 +vn 0.2380 -0.6162 0.7508 +vn 0.2573 -0.4555 0.8522 +vn 0.2705 -0.2795 0.9213 +vn 0.2771 -0.0942 0.9562 +vn 0.2771 0.0942 0.9562 +vn 0.2705 0.2795 0.9213 +vn 0.2573 0.4555 0.8522 +vn 0.2380 0.6162 0.7508 +vn 0.2130 0.7553 0.6198 +vn 0.1831 0.8670 0.4634 +vn 0.1492 0.9462 0.2870 +vn 0.1127 0.9888 0.0974 +vn 0.0750 0.9924 -0.0977 +vn 0.0377 0.9563 -0.2901 +vn 0.0024 0.8819 -0.4714 +vn -0.0294 0.7727 -0.6341 +vn -0.0564 0.6334 -0.7718 +vn -0.0775 0.4700 -0.8793 +vn -0.0351 -0.9564 0.2901 +vn -0.0920 0.2891 -0.9529 +vn -0.0993 0.0975 -0.9903 +vn 0.1152 -0.4683 0.8761 +vn -0.1060 0.4687 0.8769 +vn 0.0765 0.7707 -0.6325 +vn 0.0569 -0.8805 -0.4706 +vn -0.1149 -0.2884 0.9506 +vn -0.0118 0.9951 0.0980 +vn 0.1149 -0.2884 -0.9506 +vn -0.0569 -0.8805 0.4706 +vn -0.0931 0.6316 0.7697 +vn 0.0931 0.6316 -0.7697 +vn 0.0351 -0.9564 -0.2901 +vn -0.1195 -0.0973 0.9881 +vn 0.0119 0.9951 -0.0980 +vn 0.1060 -0.4687 -0.8770 +vn -0.0765 -0.7707 0.6325 +vn -0.0765 0.7707 0.6325 +vn 0.1060 0.4687 -0.8770 +vn 0.0119 -0.9951 -0.0980 +vn -0.1195 0.0973 0.9881 +vn 0.0351 0.9564 -0.2901 +vn 0.0931 -0.6316 -0.7697 +vn -0.0931 -0.6316 0.7697 +vn -0.0569 0.8805 0.4706 +vn 0.1149 0.2884 -0.9506 +vn -0.0118 -0.9951 0.0980 +vn -0.1149 0.2884 0.9506 +vn 0.0569 0.8805 -0.4706 +vn 0.0765 -0.7707 -0.6325 +vn -0.1060 -0.4687 0.8770 +vn -0.0351 0.9564 0.2901 +vn 0.1195 -0.0973 -0.9881 +vn 0.1195 0.0973 -0.9881 +vn -0.7025 -0.3729 -0.6062 +vn 0.1152 -0.0974 -0.9886 +vn 0.1152 0.7679 -0.6302 +vn 0.1152 -0.2884 0.9506 +vn 0.1152 -0.2884 -0.9506 +vn 0.1152 0.6302 -0.7679 +vn 0.1152 -0.0974 0.9886 +vn 0.1152 -0.4683 -0.8761 +vn 0.1152 0.4683 -0.8761 +vn 0.1152 0.0974 0.9886 +vn 0.1152 -0.6302 -0.7679 +vn 0.1152 0.2884 -0.9506 +vn 0.1152 0.2884 0.9506 +vn 0.1152 -0.7679 -0.6302 +vn 0.1152 0.0974 -0.9886 +vn 0.1152 0.4683 0.8761 +vn 0.1152 -0.8761 -0.4683 +vn 0.1152 0.6302 0.7679 +vn 0.1152 -0.9506 -0.2884 +vn 0.1152 0.7679 0.6302 +vn 0.1152 -0.9886 -0.0974 +vn 0.1152 0.8761 0.4683 +vn 0.1152 -0.9886 0.0974 +vn 0.1152 0.9506 0.2884 +vn 0.1152 -0.9506 0.2884 +vn 0.1152 0.9886 0.0974 +vn 0.1152 -0.8761 0.4683 +vn 0.1152 0.9886 -0.0974 +vn 0.1152 -0.7679 0.6302 +vn 0.1152 0.9506 -0.2884 +vn 0.1152 -0.6302 0.7679 +vn 0.1152 0.8761 -0.4683 +vn -0.1922 0.0966 -0.9766 +vn -0.1857 0.2864 -0.9400 +vn -0.1728 0.4660 -0.8677 +vn -0.1540 0.6288 -0.7621 +vn -0.1298 0.7685 -0.6266 +vn -0.1011 0.8791 -0.4658 +vn -0.0689 0.9558 -0.2859 +vn -0.0346 0.9950 -0.0940 +vn 0.0005 0.9948 0.1020 +vn 0.0349 0.9553 0.2937 +vn 0.0671 0.8783 0.4734 +vn 0.0960 0.7675 0.6338 +vn 0.1203 0.6279 0.7689 +vn 0.1393 0.4652 0.8742 +vn 0.1522 0.2859 0.9461 +vn 0.1588 0.0964 0.9826 +vn 0.1588 -0.0964 0.9826 +vn 0.1522 -0.2859 0.9461 +vn 0.1393 -0.4652 0.8742 +vn 0.1203 -0.6279 0.7689 +vn 0.0960 -0.7675 0.6338 +vn 0.0671 -0.8783 0.4734 +vn 0.0349 -0.9553 0.2937 +vn 0.0005 -0.9948 0.1020 +vn -0.0346 -0.9950 -0.0940 +vn -0.0689 -0.9558 -0.2859 +vn -0.1011 -0.8791 -0.4658 +vn -0.1298 -0.7685 -0.6266 +vn -0.1540 -0.6288 -0.7621 +vn -0.1728 -0.4660 -0.8677 +vn -0.1857 -0.2864 -0.9400 +vn -0.1922 -0.0966 -0.9766 +vn -0.9837 -0.0775 -0.1625 +vn -0.5622 -0.0867 -0.8224 +vn -0.9605 -0.2326 -0.1529 +vn -0.5376 -0.2588 -0.8025 +vn -0.9119 -0.3878 -0.1342 +vn -0.4884 -0.4261 -0.7615 +vn -0.8337 -0.5417 -0.1076 +vn -0.4148 -0.5843 -0.6975 +vn -0.7200 -0.6899 -0.0751 +vn -0.3184 -0.7269 -0.6085 +vn -0.5652 -0.8240 -0.0404 +vn -0.2025 -0.8460 -0.4933 +vn -0.3669 -0.9302 -0.0090 +vn -0.0731 -0.9328 -0.3529 +vn -0.1313 -0.9913 0.0124 +vn 0.0612 -0.9796 -0.1912 +vn 0.1229 -0.9923 0.0177 +vn 0.1903 -0.9816 -0.0156 +vn 0.3680 -0.9298 0.0045 +vn 0.3048 -0.9381 0.1644 +vn 0.5778 -0.8158 -0.0242 +vn 0.3975 -0.8530 0.3382 +vn 0.7387 -0.6713 -0.0616 +vn 0.4652 -0.7335 0.4955 +vn 0.8509 -0.5157 -0.0999 +vn 0.5091 -0.5888 0.6279 +vn 0.9229 -0.3614 -0.1330 +vn 0.5334 -0.4280 0.7296 +vn 0.9643 -0.2131 -0.1569 +vn 0.5445 -0.2590 0.7978 +vn 0.9830 -0.0703 -0.1693 +vn 0.5483 -0.0866 0.8318 +vn 0.9830 0.0703 -0.1693 +vn 0.5483 0.0866 0.8318 +vn 0.9643 0.2131 -0.1569 +vn 0.5445 0.2590 0.7978 +vn 0.9229 0.3614 -0.1330 +vn 0.5334 0.4280 0.7296 +vn 0.8509 0.5157 -0.0999 +vn 0.5091 0.5888 0.6279 +vn 0.7387 0.6713 -0.0616 +vn 0.4653 0.7335 0.4955 +vn 0.5778 0.8158 -0.0242 +vn 0.3975 0.8530 0.3382 +vn 0.3680 0.9298 0.0045 +vn 0.3048 0.9381 0.1644 +vn 0.1229 0.9923 0.0177 +vn 0.1903 0.9816 -0.0156 +vn -0.1313 0.9913 0.0124 +vn 0.0612 0.9796 -0.1912 +vn -0.3669 0.9302 -0.0090 +vn -0.0731 0.9328 -0.3529 +vn -0.5651 0.8240 -0.0404 +vn -0.2025 0.8460 -0.4933 +vn -0.7200 0.6899 -0.0751 +vn -0.3184 0.7269 -0.6085 +vn -0.8337 0.5417 -0.1076 +vn -0.4148 0.5843 -0.6975 +vn -0.9119 0.3878 -0.1342 +vn -0.4884 0.4261 -0.7615 +vn -0.9605 0.2326 -0.1529 +vn -0.5376 0.2588 -0.8025 +vn -0.9837 0.0775 -0.1625 +vn -0.5622 0.0867 -0.8224 +vn -0.6261 -0.5222 -0.5791 +vn -0.5175 -0.6667 -0.5363 +vn -0.3735 -0.7981 -0.4728 +vn -0.1954 -0.9023 -0.3844 +vn 0.0076 -0.9626 -0.2708 +vn 0.2169 -0.9663 -0.1387 +vn 0.4103 -0.9120 -0.0005 +vn 0.5709 -0.8106 0.1302 +vn 0.6925 -0.6790 0.2437 +vn 0.7776 -0.5321 0.3350 +vn 0.8327 -0.3798 0.4029 +vn 0.8649 -0.2271 0.4476 +vn 0.8796 -0.0755 0.4697 +vn 0.8796 0.0755 0.4697 +vn 0.8649 0.2272 0.4476 +vn 0.8327 0.3798 0.4029 +vn 0.7776 0.5321 0.3350 +vn 0.6925 0.6790 0.2437 +vn 0.5709 0.8106 0.1302 +vn 0.4103 0.9120 -0.0005 +vn 0.2169 0.9663 -0.1387 +vn 0.0076 0.9626 -0.2708 +vn -0.1954 0.9023 -0.3844 +vn -0.3735 0.7981 -0.4728 +vn -0.5175 0.6667 -0.5363 +vn -0.6261 0.5222 -0.5791 +vn -0.7025 0.3729 -0.6062 +vn -0.7506 0.2233 -0.6219 +vn -0.7738 0.0743 -0.6291 +vn -0.7506 -0.2233 -0.6219 +vn -0.7738 -0.0743 -0.6291 +vn -0.8764 0.0830 -0.4744 +vn -0.8532 0.2487 -0.4584 +vn -0.8050 0.4131 -0.4258 +vn -0.7283 0.5731 -0.3756 +vn -0.6193 0.7223 -0.3077 +vn -0.4760 0.8505 -0.2236 +vn -0.3013 0.9449 -0.1281 +vn -0.1043 0.9941 -0.0293 +vn 0.1010 0.9929 0.0632 +vn 0.2997 0.9435 0.1412 +vn 0.4803 0.8540 0.2000 +vn 0.6358 0.7338 0.2394 +vn 0.7628 0.5911 0.2620 +vn 0.8594 0.4327 0.2723 +vn 0.9244 0.2637 0.2755 +vn 0.9571 0.0886 0.2758 +vn 0.9571 -0.0886 0.2758 +vn 0.9244 -0.2637 0.2755 +vn 0.8594 -0.4327 0.2723 +vn 0.7628 -0.5911 0.2620 +vn 0.6358 -0.7338 0.2394 +vn 0.4803 -0.8540 0.2000 +vn 0.2997 -0.9435 0.1412 +vn 0.1010 -0.9929 0.0632 +vn -0.1043 -0.9941 -0.0293 +vn -0.3013 -0.9449 -0.1281 +vn -0.4760 -0.8505 -0.2236 +vn -0.6193 -0.7223 -0.3077 +vn -0.7283 -0.5731 -0.3756 +vn -0.8050 -0.4131 -0.4258 +vn -0.8532 -0.2487 -0.4584 +vn -0.8764 -0.0830 -0.4744 +vn -0.0993 -0.0975 0.9903 +vn -0.0920 -0.2891 0.9529 +vn -0.0775 -0.4700 0.8793 +vn -0.0564 -0.6334 0.7718 +vn -0.0294 -0.7727 0.6341 +vn 0.0024 -0.8819 0.4714 +vn 0.0377 -0.9563 0.2901 +vn 0.0750 -0.9924 0.0977 +vn 0.1127 -0.9888 -0.0974 +vn 0.1492 -0.9462 -0.2870 +vn 0.1831 -0.8670 -0.4634 +vn 0.2130 -0.7553 -0.6198 +vn 0.2380 -0.6162 -0.7508 +vn 0.2573 -0.4555 -0.8522 +vn 0.2705 -0.2795 -0.9213 +vn 0.2771 -0.0942 -0.9562 +vn 0.2771 0.0942 -0.9562 +vn 0.2705 0.2795 -0.9213 +vn 0.2573 0.4555 -0.8522 +vn 0.2380 0.6162 -0.7508 +vn 0.2130 0.7553 -0.6198 +vn 0.1831 0.8670 -0.4634 +vn 0.1492 0.9462 -0.2870 +vn 0.1127 0.9888 -0.0974 +vn 0.0750 0.9924 0.0977 +vn 0.0377 0.9563 0.2901 +vn 0.0024 0.8819 0.4714 +vn -0.0294 0.7727 0.6341 +vn -0.0564 0.6334 0.7718 +vn -0.0775 0.4700 0.8793 +vn -0.0351 -0.9564 -0.2901 +vn -0.0920 0.2891 0.9529 +vn -0.0993 0.0975 0.9903 +vn -0.1060 0.4687 -0.8770 +vn 0.0765 0.7707 0.6325 +vn 0.0569 -0.8805 0.4706 +vn -0.1149 -0.2884 -0.9506 +vn -0.0118 0.9951 -0.0980 +vn 0.1149 -0.2884 0.9506 +vn -0.0569 -0.8805 -0.4706 +vn -0.0931 0.6316 -0.7697 +vn 0.0931 0.6316 0.7697 +vn 0.0351 -0.9564 0.2901 +vn -0.1195 -0.0973 -0.9881 +vn 0.0119 0.9951 0.0980 +vn 0.1060 -0.4687 0.8769 +vn -0.0765 -0.7707 -0.6325 +vn -0.0765 0.7707 -0.6325 +vn 0.1060 0.4687 0.8769 +vn 0.0119 -0.9951 0.0980 +vn -0.1195 0.0973 -0.9881 +vn 0.0351 0.9564 0.2901 +vn 0.0931 -0.6316 0.7697 +vn -0.0931 -0.6316 -0.7697 +vn -0.0569 0.8805 -0.4706 +vn 0.1149 0.2884 0.9506 +vn -0.0118 -0.9951 -0.0980 +vn -0.1149 0.2884 -0.9506 +vn 0.0569 0.8805 0.4706 +vn 0.0765 -0.7707 0.6325 +vn -0.1060 -0.4687 -0.8770 +vn -0.0351 0.9564 -0.2901 +vn 0.1195 -0.0973 0.9881 +vn 0.1195 0.0973 0.9881 +vn -0.7025 -0.3729 0.6062 +vn 0.1152 -0.4683 0.8760 +vn 0.1152 0.4683 0.8760 +vn -0.1922 0.0966 0.9766 +vn -0.0000 -0.0000 -1.0000 +vn -0.1857 0.2864 0.9400 +vn -0.1728 0.4660 0.8677 +vn -0.1540 0.6288 0.7621 +vn -0.1298 0.7685 0.6266 +vn -0.1011 0.8791 0.4658 +vn -0.0689 0.9558 0.2859 +vn -0.0346 0.9950 0.0940 +vn 0.0005 0.9948 -0.1020 +vn 0.0349 0.9553 -0.2937 +vn 0.0671 0.8783 -0.4734 +vn 0.0960 0.7676 -0.6338 +vn 0.1203 0.6279 -0.7689 +vn 0.1393 0.4652 -0.8742 +vn 0.1522 0.2859 -0.9461 +vn 0.1588 0.0964 -0.9826 +vn 0.1588 -0.0964 -0.9826 +vn 0.1522 -0.2859 -0.9461 +vn 0.1393 -0.4652 -0.8742 +vn 0.1203 -0.6279 -0.7689 +vn 0.0960 -0.7675 -0.6338 +vn 0.0671 -0.8783 -0.4734 +vn 0.0349 -0.9553 -0.2937 +vn 0.0005 -0.9948 -0.1020 +vn -0.0346 -0.9950 0.0940 +vn -0.0689 -0.9558 0.2859 +vn -0.1011 -0.8791 0.4658 +vn -0.1298 -0.7685 0.6266 +vn -0.1540 -0.6288 0.7621 +vn -0.1728 -0.4660 0.8677 +vn -0.1857 -0.2864 0.9399 +vn -0.1922 -0.0966 0.9766 +vn -0.9837 -0.0775 0.1625 +vn -0.5622 -0.0867 0.8224 +vn -0.9605 -0.2326 0.1529 +vn -0.5376 -0.2588 0.8025 +vn -0.9119 -0.3878 0.1342 +vn -0.4884 -0.4261 0.7615 +vn -0.8337 -0.5417 0.1076 +vn -0.4148 -0.5843 0.6975 +vn -0.7200 -0.6899 0.0751 +vn -0.3184 -0.7269 0.6085 +vn -0.5652 -0.8240 0.0404 +vn -0.2025 -0.8460 0.4933 +vn -0.3669 -0.9302 0.0090 +vn -0.0731 -0.9328 0.3529 +vn -0.1313 -0.9913 -0.0124 +vn 0.0612 -0.9796 0.1912 +vn 0.1229 -0.9923 -0.0177 +vn 0.1903 -0.9816 0.0156 +vn 0.3680 -0.9298 -0.0045 +vn 0.3048 -0.9381 -0.1644 +vn 0.5778 -0.8158 0.0242 +vn 0.3975 -0.8530 -0.3382 +vn 0.7387 -0.6713 0.0616 +vn 0.4652 -0.7335 -0.4955 +vn 0.8509 -0.5157 0.0999 +vn 0.5091 -0.5888 -0.6279 +vn 0.9229 -0.3614 0.1330 +vn 0.5334 -0.4280 -0.7296 +vn 0.9643 -0.2131 0.1569 +vn 0.5445 -0.2590 -0.7978 +vn 0.9830 -0.0703 0.1693 +vn 0.5483 -0.0866 -0.8318 +vn 0.9830 0.0703 0.1693 +vn 0.5483 0.0866 -0.8318 +vn 0.9643 0.2131 0.1569 +vn 0.5445 0.2590 -0.7978 +vn 0.9229 0.3614 0.1330 +vn 0.5334 0.4280 -0.7296 +vn 0.8509 0.5157 0.0999 +vn 0.5091 0.5888 -0.6279 +vn 0.7387 0.6713 0.0616 +vn 0.4652 0.7335 -0.4955 +vn 0.5778 0.8158 0.0242 +vn 0.3975 0.8530 -0.3382 +vn 0.3680 0.9298 -0.0045 +vn 0.3048 0.9381 -0.1644 +vn 0.1229 0.9923 -0.0177 +vn 0.1903 0.9816 0.0156 +vn -0.1313 0.9913 -0.0124 +vn 0.0612 0.9796 0.1912 +vn -0.3669 0.9302 0.0090 +vn -0.0731 0.9328 0.3529 +vn -0.5652 0.8240 0.0404 +vn -0.2025 0.8460 0.4933 +vn -0.7200 0.6899 0.0751 +vn -0.3184 0.7269 0.6085 +vn -0.8337 0.5417 0.1076 +vn -0.4148 0.5843 0.6975 +vn -0.9119 0.3878 0.1342 +vn -0.4884 0.4261 0.7615 +vn -0.9605 0.2326 0.1529 +vn -0.5376 0.2588 0.8025 +vn -0.9837 0.0775 0.1625 +vn -0.5622 0.0867 0.8224 +vn -0.6261 -0.5221 0.5791 +vn -0.5175 -0.6667 0.5363 +vn -0.3736 -0.7981 0.4728 +vn -0.1954 -0.9023 0.3844 +vn 0.0076 -0.9626 0.2708 +vn 0.2169 -0.9663 0.1387 +vn 0.4103 -0.9120 0.0005 +vn 0.5709 -0.8106 -0.1302 +vn 0.6925 -0.6790 -0.2437 +vn 0.7776 -0.5321 -0.3350 +vn 0.8327 -0.3798 -0.4029 +vn 0.8649 -0.2271 -0.4476 +vn 0.8796 -0.0755 -0.4697 +vn 0.8796 0.0755 -0.4697 +vn 0.8649 0.2271 -0.4476 +vn 0.8327 0.3798 -0.4029 +vn 0.7776 0.5321 -0.3350 +vn 0.6925 0.6790 -0.2437 +vn 0.5709 0.8106 -0.1302 +vn 0.4103 0.9120 0.0005 +vn 0.2169 0.9663 0.1387 +vn 0.0076 0.9626 0.2708 +vn -0.1954 0.9023 0.3844 +vn -0.3735 0.7981 0.4728 +vn -0.5175 0.6667 0.5363 +vn -0.6261 0.5222 0.5791 +vn -0.7025 0.3729 0.6062 +vn -0.7506 0.2233 0.6219 +vn -0.7738 0.0743 0.6291 +vn -0.7506 -0.2233 0.6219 +vn -0.7738 -0.0743 0.6291 +vn -0.8764 0.0830 0.4744 +vn -0.8532 0.2486 0.4584 +vn -0.8050 0.4131 0.4258 +vn -0.7283 0.5731 0.3756 +vn -0.6193 0.7223 0.3077 +vn -0.4760 0.8505 0.2236 +vn -0.3013 0.9449 0.1281 +vn -0.1043 0.9941 0.0293 +vn 0.1010 0.9929 -0.0632 +vn 0.2997 0.9435 -0.1412 +vn 0.4803 0.8540 -0.2000 +vn 0.6358 0.7338 -0.2394 +vn 0.7629 0.5911 -0.2620 +vn 0.8594 0.4327 -0.2723 +vn 0.9244 0.2637 -0.2755 +vn 0.9571 0.0885 -0.2758 +vn 0.9571 -0.0885 -0.2758 +vn 0.9244 -0.2637 -0.2755 +vn 0.8594 -0.4327 -0.2723 +vn 0.7629 -0.5911 -0.2620 +vn 0.6358 -0.7338 -0.2394 +vn 0.4803 -0.8540 -0.2000 +vn 0.2997 -0.9435 -0.1412 +vn 0.1010 -0.9929 -0.0632 +vn -0.1043 -0.9941 0.0293 +vn -0.3013 -0.9449 0.1281 +vn -0.4761 -0.8505 0.2236 +vn -0.6193 -0.7223 0.3077 +vn -0.7283 -0.5731 0.3756 +vn -0.8050 -0.4131 0.4258 +vn -0.8532 -0.2487 0.4584 +vn -0.8764 -0.0830 0.4744 +vn -0.1060 0.4687 0.8770 +vn 0.1060 -0.4687 -0.8769 +vn -0.7386 -0.3778 -0.5583 +vn -0.1046 0.0957 -0.9899 +vn 0.6109 -0.7917 -0.0030 +vn -0.0972 0.2839 -0.9539 +vn -0.0827 0.4621 -0.8830 +vn -0.0613 0.6238 -0.7792 +vn -0.0337 0.7626 -0.6460 +vn -0.0006 0.8729 -0.4879 +vn 0.0369 0.9497 -0.3108 +vn 0.0775 0.9895 -0.1219 +vn 0.1198 0.9902 0.0712 +vn 0.1621 0.9518 0.2602 +vn 0.2029 0.8760 0.4375 +vn 0.2405 0.7663 0.5958 +vn 0.2731 0.6274 0.7292 +vn 0.2994 0.4651 0.8331 +vn 0.3177 0.2859 0.9040 +vn 0.3272 0.0965 0.9400 +vn 0.3272 -0.0965 0.9400 +vn 0.3177 -0.2859 0.9040 +vn 0.2994 -0.4651 0.8331 +vn 0.2731 -0.6274 0.7292 +vn 0.2405 -0.7663 0.5958 +vn 0.2029 -0.8760 0.4375 +vn 0.1621 -0.9518 0.2602 +vn 0.1198 -0.9902 0.0712 +vn 0.0775 -0.9895 -0.1219 +vn 0.0369 -0.9497 -0.3108 +vn -0.0006 -0.8729 -0.4879 +vn -0.0337 -0.7626 -0.6460 +vn -0.0613 -0.6238 -0.7792 +vn -0.0827 -0.4621 -0.8830 +vn -0.0972 -0.2839 -0.9539 +vn -0.1046 -0.0958 -0.9899 +vn -0.9275 -0.0776 -0.3658 +vn -0.5959 -0.0874 -0.7983 +vn -0.9062 -0.2331 -0.3528 +vn -0.5709 -0.2608 -0.7785 +vn -0.8612 -0.3894 -0.3267 +vn -0.5208 -0.4294 -0.7378 +vn -0.7880 -0.5449 -0.2868 +vn -0.4460 -0.5887 -0.6742 +vn -0.6804 -0.6947 -0.2333 +vn -0.3480 -0.7322 -0.5854 +vn -0.5329 -0.8294 -0.1675 +vn -0.2305 -0.8518 -0.4705 +vn -0.3445 -0.9341 -0.0935 +vn -0.0997 -0.9387 -0.3301 +vn -0.1227 -0.9923 -0.0187 +vn 0.0351 -0.9851 -0.1683 +vn 0.1144 -0.9923 0.0478 +vn 0.1634 -0.9865 0.0080 +vn 0.3432 -0.9341 0.0980 +vn 0.2754 -0.9424 0.1897 +vn 0.5439 -0.8293 0.1287 +vn 0.3638 -0.8565 0.3662 +vn 0.7057 -0.6942 0.1418 +vn 0.4254 -0.7357 0.5270 +vn 0.8271 -0.5437 0.1425 +vn 0.4615 -0.5895 0.6630 +vn 0.9115 -0.3880 0.1367 +vn 0.4778 -0.4275 0.7674 +vn 0.9641 -0.2319 0.1297 +vn 0.4823 -0.2580 0.8371 +vn 0.9891 -0.0771 0.1252 +vn 0.4823 -0.0862 0.8718 +vn 0.9891 0.0771 0.1252 +vn 0.4823 0.0862 0.8718 +vn 0.9641 0.2319 0.1297 +vn 0.4823 0.2580 0.8371 +vn 0.9115 0.3880 0.1367 +vn 0.4778 0.4275 0.7674 +vn 0.8271 0.5437 0.1425 +vn 0.4615 0.5895 0.6630 +vn 0.7057 0.6942 0.1418 +vn 0.4254 0.7357 0.5270 +vn 0.5438 0.8293 0.1287 +vn 0.3638 0.8565 0.3662 +vn 0.3432 0.9341 0.0980 +vn 0.2754 0.9424 0.1897 +vn 0.1144 0.9923 0.0478 +vn 0.1634 0.9865 0.0080 +vn -0.1227 0.9923 -0.0187 +vn 0.0351 0.9851 -0.1683 +vn -0.3445 0.9341 -0.0935 +vn -0.0997 0.9387 -0.3301 +vn -0.5329 0.8294 -0.1675 +vn -0.2305 0.8518 -0.4705 +vn -0.6804 0.6947 -0.2333 +vn -0.3480 0.7322 -0.5854 +vn -0.7880 0.5449 -0.2868 +vn -0.4460 0.5887 -0.6742 +vn -0.8612 0.3894 -0.3267 +vn -0.5208 0.4294 -0.7378 +vn -0.9062 0.2331 -0.3528 +vn -0.5709 0.2608 -0.7785 +vn -0.9275 0.0776 -0.3658 +vn -0.5959 0.0874 -0.7983 +vn -0.6636 -0.5294 -0.5286 +vn -0.5562 -0.6767 -0.4823 +vn -0.4132 -0.8110 -0.4142 +vn -0.2352 -0.9177 -0.3202 +vn -0.0315 -0.9791 -0.2007 +vn 0.1787 -0.9819 -0.0632 +vn 0.3725 -0.9247 0.0790 +vn 0.5325 -0.8195 0.2119 +vn 0.6524 -0.6842 0.3259 +vn 0.7351 -0.5346 0.4169 +vn 0.7879 -0.3806 0.4841 +vn 0.8182 -0.2272 0.5281 +vn 0.8318 -0.0755 0.5499 +vn 0.8318 0.0755 0.5499 +vn 0.8182 0.2272 0.5281 +vn 0.7879 0.3806 0.4841 +vn 0.7351 0.5346 0.4169 +vn 0.6524 0.6842 0.3259 +vn 0.5325 0.8195 0.2119 +vn 0.3725 0.9247 0.0790 +vn 0.1787 0.9819 -0.0632 +vn -0.0315 0.9791 -0.2007 +vn -0.2352 0.9177 -0.3202 +vn -0.4132 0.8110 -0.4142 +vn -0.5562 0.6767 -0.4823 +vn -0.6636 0.5294 -0.5286 +vn -0.7386 0.3777 -0.5583 +vn -0.7858 0.2260 -0.5757 +vn -0.8085 0.0752 -0.5837 +vn -0.7858 -0.2260 -0.5757 +vn -0.8085 -0.0752 -0.5837 +vn -0.9503 0.0881 -0.2984 +vn -0.9219 0.2632 -0.2841 +vn -0.8638 0.4341 -0.2559 +vn -0.7737 0.5960 -0.2150 +vn -0.6502 0.7419 -0.1639 +vn -0.4941 0.8628 -0.1069 +vn -0.3101 0.9494 -0.0501 +vn -0.1069 0.9943 -0.0008 +vn 0.1038 0.9940 0.0342 +vn 0.3100 0.9494 0.0506 +vn 0.5006 0.8644 0.0468 +vn 0.6662 0.7454 0.0255 +vn 0.7999 0.6002 -0.0073 +vn 0.8983 0.4374 -0.0429 +vn 0.9615 0.2650 -0.0726 +vn 0.9920 0.0887 -0.0894 +vn 0.9920 -0.0887 -0.0894 +vn 0.9615 -0.2650 -0.0726 +vn 0.8983 -0.4374 -0.0429 +vn 0.7999 -0.6001 -0.0073 +vn 0.6661 -0.7454 0.0255 +vn 0.5006 -0.8644 0.0468 +vn 0.3100 -0.9494 0.0506 +vn 0.1038 -0.9940 0.0342 +vn -0.1069 -0.9943 -0.0008 +vn -0.3101 -0.9494 -0.0501 +vn -0.4941 -0.8628 -0.1069 +vn -0.6502 -0.7419 -0.1639 +vn -0.7737 -0.5960 -0.2150 +vn -0.8637 -0.4341 -0.2559 +vn -0.9219 -0.2632 -0.2841 +vn -0.9503 -0.0881 -0.2984 +vn -0.3194 0.9437 -0.0860 +vn 0.7635 -0.6444 -0.0425 +vn -0.8741 -0.1360 -0.4663 +vn -0.4548 0.8752 -0.1650 +vn 0.8989 -0.4307 -0.0803 +vn -0.8175 -0.3916 -0.4223 +vn -0.5906 0.7655 -0.2552 +vn 0.9827 -0.1528 -0.1044 +vn -0.7169 -0.6052 -0.3462 +vn -0.7169 0.6052 -0.3462 +vn 0.9827 0.1528 -0.1044 +vn -0.5906 -0.7655 -0.2552 +vn -0.8175 0.3916 -0.4223 +vn 0.8989 0.4307 -0.0803 +vn -0.4548 -0.8752 -0.1650 +vn -0.8741 0.1360 -0.4663 +vn 0.7635 0.6445 -0.0425 +vn -0.3194 -0.9437 -0.0860 +vn 0.6109 0.7917 -0.0030 +vn -0.1886 -0.9818 -0.0232 +vn 0.4609 0.8869 0.0297 +vn -0.0622 -0.9978 0.0214 +vn 0.3202 0.9460 0.0506 +vn 0.0622 -0.9969 0.0480 +vn 0.1883 0.9804 0.0573 +vn 0.1883 -0.9804 0.0573 +vn 0.0622 0.9969 0.0480 +vn 0.3202 -0.9460 0.0506 +vn -0.0622 0.9978 0.0214 +vn 0.4609 -0.8869 0.0297 +vn -0.1886 0.9818 -0.0232 +vn 0.1060 -0.4687 0.8770 +vn -0.0765 0.7708 -0.6325 +vn 0.1060 0.4687 0.8770 +vn -0.7386 -0.3777 0.5583 +vn -0.1046 0.0958 0.9899 +vn 0.6109 -0.7917 0.0030 +vn -0.0972 0.2839 0.9539 +vn -0.0827 0.4621 0.8830 +vn -0.0613 0.6238 0.7792 +vn -0.0337 0.7626 0.6460 +vn -0.0006 0.8729 0.4879 +vn 0.0369 0.9497 0.3108 +vn 0.0775 0.9895 0.1219 +vn 0.1198 0.9902 -0.0712 +vn 0.1621 0.9518 -0.2602 +vn 0.2029 0.8760 -0.4375 +vn 0.2405 0.7663 -0.5958 +vn 0.2731 0.6274 -0.7292 +vn 0.2994 0.4651 -0.8331 +vn 0.3177 0.2859 -0.9040 +vn 0.3272 0.0965 -0.9400 +vn 0.3272 -0.0965 -0.9400 +vn 0.3177 -0.2859 -0.9040 +vn 0.2994 -0.4651 -0.8331 +vn 0.2731 -0.6274 -0.7292 +vn 0.2405 -0.7663 -0.5958 +vn 0.2029 -0.8760 -0.4375 +vn 0.1621 -0.9518 -0.2602 +vn 0.1198 -0.9902 -0.0712 +vn 0.0775 -0.9895 0.1219 +vn 0.0369 -0.9497 0.3108 +vn -0.0006 -0.8729 0.4879 +vn -0.0336 -0.7626 0.6460 +vn -0.0613 -0.6238 0.7792 +vn -0.0827 -0.4621 0.8830 +vn -0.0972 -0.2839 0.9539 +vn -0.1046 -0.0958 0.9899 +vn -0.9275 -0.0776 0.3658 +vn -0.5959 -0.0874 0.7983 +vn -0.9062 -0.2331 0.3528 +vn -0.5709 -0.2608 0.7785 +vn -0.8612 -0.3894 0.3267 +vn -0.5208 -0.4294 0.7378 +vn -0.7880 -0.5449 0.2868 +vn -0.4460 -0.5887 0.6742 +vn -0.6804 -0.6947 0.2333 +vn -0.3480 -0.7322 0.5854 +vn -0.5329 -0.8294 0.1675 +vn -0.2305 -0.8518 0.4705 +vn -0.3445 -0.9341 0.0935 +vn -0.0997 -0.9387 0.3301 +vn -0.1227 -0.9923 0.0187 +vn 0.0351 -0.9851 0.1683 +vn 0.1144 -0.9923 -0.0478 +vn 0.1634 -0.9865 -0.0080 +vn 0.3432 -0.9341 -0.0980 +vn 0.2754 -0.9424 -0.1897 +vn 0.5438 -0.8293 -0.1287 +vn 0.3638 -0.8565 -0.3662 +vn 0.7057 -0.6942 -0.1418 +vn 0.4254 -0.7357 -0.5270 +vn 0.8271 -0.5437 -0.1425 +vn 0.4615 -0.5895 -0.6630 +vn 0.9115 -0.3879 -0.1367 +vn 0.4778 -0.4275 -0.7674 +vn 0.9641 -0.2319 -0.1297 +vn 0.4823 -0.2580 -0.8371 +vn 0.9891 -0.0771 -0.1252 +vn 0.4823 -0.0861 -0.8718 +vn 0.9891 0.0771 -0.1252 +vn 0.4823 0.0861 -0.8718 +vn 0.9641 0.2319 -0.1297 +vn 0.4823 0.2580 -0.8371 +vn 0.9115 0.3879 -0.1367 +vn 0.4778 0.4275 -0.7674 +vn 0.8271 0.5437 -0.1425 +vn 0.4615 0.5895 -0.6630 +vn 0.7057 0.6942 -0.1418 +vn 0.4254 0.7357 -0.5270 +vn 0.5438 0.8293 -0.1287 +vn 0.3638 0.8565 -0.3662 +vn 0.3432 0.9341 -0.0980 +vn 0.2754 0.9424 -0.1897 +vn 0.1144 0.9923 -0.0478 +vn 0.1634 0.9865 -0.0080 +vn -0.1227 0.9923 0.0187 +vn 0.0351 0.9851 0.1683 +vn -0.3445 0.9341 0.0935 +vn -0.0997 0.9387 0.3301 +vn -0.5330 0.8294 0.1675 +vn -0.2305 0.8518 0.4705 +vn -0.6804 0.6947 0.2333 +vn -0.3480 0.7322 0.5854 +vn -0.7880 0.5449 0.2868 +vn -0.4460 0.5887 0.6742 +vn -0.8612 0.3894 0.3267 +vn -0.5208 0.4294 0.7378 +vn -0.9062 0.2331 0.3528 +vn -0.5709 0.2608 0.7785 +vn -0.9275 0.0776 0.3658 +vn -0.5959 0.0874 0.7983 +vn -0.6636 -0.5294 0.5286 +vn -0.5562 -0.6767 0.4823 +vn -0.4132 -0.8110 0.4142 +vn -0.2352 -0.9177 0.3202 +vn -0.0315 -0.9791 0.2007 +vn 0.1787 -0.9819 0.0632 +vn 0.3725 -0.9247 -0.0790 +vn 0.5325 -0.8195 -0.2119 +vn 0.6524 -0.6843 -0.3259 +vn 0.7351 -0.5346 -0.4169 +vn 0.7879 -0.3806 -0.4841 +vn 0.8182 -0.2272 -0.5281 +vn 0.8318 -0.0755 -0.5499 +vn 0.8318 0.0755 -0.5499 +vn 0.8182 0.2272 -0.5281 +vn 0.7879 0.3806 -0.4841 +vn 0.7351 0.5346 -0.4169 +vn 0.6524 0.6842 -0.3259 +vn 0.5325 0.8195 -0.2119 +vn 0.3725 0.9247 -0.0790 +vn 0.1787 0.9819 0.0632 +vn -0.0315 0.9791 0.2007 +vn -0.2352 0.9177 0.3202 +vn -0.4132 0.8110 0.4142 +vn -0.5562 0.6767 0.4823 +vn -0.6636 0.5294 0.5286 +vn -0.7386 0.3777 0.5583 +vn -0.7858 0.2260 0.5757 +vn -0.8085 0.0752 0.5837 +vn -0.7858 -0.2260 0.5757 +vn -0.8085 -0.0752 0.5837 +vn -0.9503 0.0881 0.2984 +vn -0.9219 0.2632 0.2841 +vn -0.8638 0.4341 0.2559 +vn -0.7737 0.5960 0.2150 +vn -0.6502 0.7419 0.1639 +vn -0.4941 0.8628 0.1069 +vn -0.3101 0.9494 0.0501 +vn -0.1069 0.9943 0.0008 +vn 0.1038 0.9940 -0.0342 +vn 0.3100 0.9494 -0.0506 +vn 0.5006 0.8644 -0.0468 +vn 0.6661 0.7454 -0.0255 +vn 0.7998 0.6002 0.0073 +vn 0.8983 0.4374 0.0429 +vn 0.9615 0.2650 0.0726 +vn 0.9920 0.0887 0.0894 +vn 0.9920 -0.0887 0.0894 +vn 0.9615 -0.2650 0.0726 +vn 0.8983 -0.4374 0.0429 +vn 0.7998 -0.6002 0.0073 +vn 0.6661 -0.7454 -0.0255 +vn 0.5006 -0.8644 -0.0468 +vn 0.3100 -0.9494 -0.0506 +vn 0.1038 -0.9940 -0.0342 +vn -0.1069 -0.9943 0.0008 +vn -0.3101 -0.9494 0.0501 +vn -0.4941 -0.8628 0.1069 +vn -0.6502 -0.7419 0.1639 +vn -0.7737 -0.5960 0.2150 +vn -0.8638 -0.4341 0.2559 +vn -0.9219 -0.2632 0.2841 +vn -0.9503 -0.0881 0.2984 +vn -0.3194 0.9437 0.0860 +vn 0.7635 -0.6445 0.0425 +vn -0.8741 -0.1360 0.4663 +vn -0.4548 0.8752 0.1650 +vn 0.8989 -0.4306 0.0803 +vn -0.8175 -0.3916 0.4223 +vn -0.5906 0.7655 0.2552 +vn 0.9827 -0.1529 0.1044 +vn -0.7169 -0.6052 0.3462 +vn -0.7169 0.6052 0.3462 +vn 0.9827 0.1529 0.1044 +vn -0.5906 -0.7655 0.2552 +vn -0.8175 0.3916 0.4223 +vn 0.8989 0.4306 0.0803 +vn -0.4548 -0.8752 0.1650 +vn -0.8741 0.1360 0.4663 +vn 0.7635 0.6445 0.0425 +vn -0.3194 -0.9437 0.0860 +vn 0.6109 0.7917 0.0030 +vn -0.1886 -0.9818 0.0232 +vn 0.4609 0.8869 -0.0297 +vn -0.0622 -0.9978 -0.0214 +vn 0.3202 0.9460 -0.0506 +vn 0.0622 -0.9969 -0.0480 +vn 0.1883 0.9804 -0.0573 +vn 0.1883 -0.9804 -0.0573 +vn 0.0622 0.9969 -0.0480 +vn 0.3202 -0.9460 -0.0506 +vn -0.0622 0.9978 -0.0214 +vn 0.4609 -0.8869 -0.0297 +vn -0.1886 0.9818 0.0232 +usemtl Jewelry +s off +f 768/1/1 738/2/1 58/3/1 57/4/1 +f 196/5/2 194/6/2 83/7/2 84/8/2 +f 1219/9/3 1218/10/3 1115/11/3 1114/12/3 +f 85/13/4 84/8/4 116/14/4 117/15/4 +f 197/16/5 196/5/5 84/8/5 85/13/5 +f 738/2/6 739/17/6 59/18/6 58/3/6 +f 198/19/7 197/16/7 85/13/7 86/20/7 +f 739/17/8 740/21/8 60/22/8 59/18/8 +f 769/23/9 741/24/9 34/25/9 33/26/9 +f 199/27/10 198/19/10 86/20/10 87/28/10 +f 740/21/11 742/29/11 61/30/11 60/22/11 +f 741/24/12 743/31/12 35/32/12 34/25/12 +f 200/33/13 199/27/13 87/28/13 88/34/13 +f 742/29/14 744/35/14 62/36/14 61/30/14 +f 743/31/15 745/37/15 36/38/15 35/32/15 +f 201/39/16 200/33/16 88/34/16 89/40/16 +f 744/35/17 746/41/17 63/42/17 62/36/17 +f 745/37/18 747/43/18 37/44/18 36/38/18 +f 202/45/1 201/39/1 89/40/1 90/46/1 +f 746/41/19 748/47/19 64/48/19 63/42/19 +f 747/43/20 749/49/20 38/50/20 37/44/20 +f 203/51/6 202/45/6 90/46/6 91/52/6 +f 748/47/21 769/53/21 33/54/21 64/48/21 +f 749/49/22 750/55/22 39/56/22 38/50/22 +f 204/57/8 203/51/8 91/52/8 92/58/8 +f 205/59/9 195/60/9 66/61/9 65/62/9 +f 750/55/23 751/63/23 40/64/23 39/56/23 +f 206/65/11 204/57/11 92/58/11 93/66/11 +f 207/67/12 205/59/12 65/62/12 67/68/12 +f 751/63/24 752/69/24 41/70/24 40/64/24 +f 208/71/14 206/65/14 93/66/14 94/72/14 +f 209/73/15 207/67/15 67/68/15 68/74/15 +f 752/69/25 753/75/25 42/76/25 41/70/25 +f 210/77/17 208/71/17 94/72/17 95/78/17 +f 211/79/18 209/73/18 68/74/18 69/80/18 +f 753/75/26 754/81/26 43/82/26 42/76/26 +f 212/83/19 210/77/19 95/78/19 96/84/19 +f 213/85/20 211/79/20 69/80/20 70/86/20 +f 754/81/27 755/87/27 44/88/27 43/82/27 +f 195/89/21 212/83/21 96/84/21 66/90/21 +f 214/91/22 213/85/22 70/86/22 71/92/22 +f 755/87/28 756/93/28 45/94/28 44/88/28 +f 215/95/23 214/91/23 71/92/23 72/96/23 +f 756/93/29 757/97/29 46/98/29 45/94/29 +f 216/99/24 215/95/24 72/96/24 73/100/24 +f 757/97/30 758/101/30 47/102/30 46/98/30 +f 217/103/25 216/99/25 73/100/25 74/104/25 +f 758/101/31 759/105/31 48/106/31 47/102/31 +f 218/107/26 217/103/26 74/104/26 75/108/26 +f 759/105/32 760/109/32 49/110/32 48/106/32 +f 219/111/27 218/107/27 75/108/27 76/112/27 +f 760/109/33 761/113/33 50/114/33 49/110/33 +f 220/115/28 219/111/28 76/112/28 77/116/28 +f 761/113/34 762/117/34 51/118/34 50/114/34 +f 221/119/29 220/115/29 77/116/29 78/120/29 +f 762/117/2 763/121/2 52/122/2 51/118/2 +f 222/123/30 221/119/30 78/120/30 79/124/30 +f 763/121/5 764/125/5 53/126/5 52/122/5 +f 223/127/31 222/123/31 79/124/31 80/128/31 +f 764/125/7 765/129/7 54/130/7 53/126/7 +f 224/131/32 223/127/32 80/128/32 81/132/32 +f 765/129/10 766/133/10 55/134/10 54/130/10 +f 225/135/33 224/131/33 81/132/33 82/136/33 +f 766/133/13 767/137/13 56/138/13 55/134/13 +f 194/6/34 225/135/34 82/136/34 83/7/34 +f 767/137/16 768/1/16 57/4/16 56/138/16 +f 128/139/35 127/140/35 159/141/35 160/142/35 +f 72/96/36 71/92/36 103/143/36 104/144/36 +f 86/20/37 85/13/37 117/15/37 118/145/37 +f 73/100/38 72/96/38 104/144/38 105/146/38 +f 87/28/39 86/20/39 118/145/39 119/147/39 +f 74/104/40 73/100/40 105/146/40 106/148/40 +f 88/34/41 87/28/41 119/147/41 120/149/41 +f 75/108/42 74/104/42 106/148/42 107/150/42 +f 89/40/43 88/34/43 120/149/43 121/151/43 +f 76/112/44 75/108/44 107/150/44 108/152/44 +f 90/46/45 89/40/45 121/151/45 122/153/45 +f 77/116/46 76/112/46 108/152/46 109/154/46 +f 91/52/47 90/46/47 122/153/47 123/155/47 +f 78/120/48 77/116/48 109/154/48 110/156/48 +f 92/58/49 91/52/49 123/155/49 124/157/49 +f 79/124/50 78/120/50 110/156/50 111/158/50 +f 65/62/51 66/61/51 98/159/51 97/160/51 +f 93/66/52 92/58/52 124/157/52 125/161/52 +f 80/128/53 79/124/53 111/158/53 112/162/53 +f 67/68/54 65/62/54 97/160/54 99/163/54 +f 94/72/55 93/66/55 125/161/55 126/164/55 +f 81/132/56 80/128/56 112/162/56 113/165/56 +f 68/74/57 67/68/57 99/163/57 100/166/57 +f 95/78/58 94/72/58 126/164/58 127/140/58 +f 82/136/59 81/132/59 113/165/59 114/167/59 +f 69/80/60 68/74/60 100/166/60 101/168/60 +f 96/84/61 95/78/61 127/140/61 128/139/61 +f 83/7/62 82/136/62 114/167/62 115/169/62 +f 70/86/63 69/80/63 101/168/63 102/170/63 +f 66/90/64 96/84/64 128/139/64 98/171/64 +f 84/8/65 83/7/65 115/169/65 116/14/65 +f 71/92/66 70/86/66 102/170/66 103/143/66 +f 150/172/67 149/173/67 161/174/67 +f 115/169/68 114/167/68 146/175/68 147/176/68 +f 102/170/69 101/168/69 133/177/69 134/178/69 +f 98/171/70 128/139/70 160/142/70 130/179/70 +f 116/14/71 115/169/71 147/176/71 148/180/71 +f 103/143/72 102/170/72 134/178/72 135/181/72 +f 117/15/73 116/14/73 148/180/73 149/173/73 +f 104/144/74 103/143/74 135/181/74 136/182/74 +f 118/145/75 117/15/75 149/173/75 150/172/75 +f 105/146/76 104/144/76 136/182/76 137/183/76 +f 119/147/77 118/145/77 150/172/77 151/184/77 +f 106/148/78 105/146/78 137/183/78 138/185/78 +f 120/149/79 119/147/79 151/184/79 152/186/79 +f 107/150/80 106/148/80 138/185/80 139/187/80 +f 121/151/81 120/149/81 152/186/81 153/188/81 +f 108/152/82 107/150/82 139/187/82 140/189/82 +f 122/153/83 121/151/83 153/188/83 154/190/83 +f 109/154/84 108/152/84 140/189/84 141/191/84 +f 123/155/85 122/153/85 154/190/85 155/192/85 +f 110/156/86 109/154/86 141/191/86 142/193/86 +f 124/157/87 123/155/87 155/192/87 156/194/87 +f 111/158/88 110/156/88 142/193/88 143/195/88 +f 97/160/89 98/159/89 130/196/89 129/197/89 +f 125/161/90 124/157/90 156/194/90 157/198/90 +f 112/162/91 111/158/91 143/195/91 144/199/91 +f 99/163/92 97/160/92 129/197/92 131/200/92 +f 126/164/93 125/161/93 157/198/93 158/201/93 +f 113/165/94 112/162/94 144/199/94 145/202/94 +f 100/166/95 99/163/95 131/200/95 132/203/95 +f 127/140/96 126/164/96 158/201/96 159/141/96 +f 114/167/97 113/165/97 145/202/97 146/175/97 +f 101/168/98 100/166/98 132/203/98 133/177/98 +f 137/183/99 136/182/99 161/204/99 +f 151/184/100 150/172/100 161/205/100 +f 138/185/101 137/183/101 161/206/101 +f 152/186/102 151/184/102 161/207/102 +f 139/187/103 138/185/103 161/208/103 +f 153/188/104 152/186/104 161/209/104 +f 140/189/105 139/187/105 161/210/105 +f 154/190/106 153/188/106 161/211/106 +f 141/191/107 140/189/107 161/212/107 +f 155/192/108 154/190/108 161/213/108 +f 142/193/109 141/191/109 161/214/109 +f 156/194/110 155/192/110 161/215/110 +f 143/195/111 142/193/111 161/216/111 +f 129/197/112 130/196/112 161/217/112 +f 157/198/113 156/194/113 161/218/113 +f 144/199/114 143/195/114 161/219/114 +f 131/200/115 129/197/115 161/220/115 +f 158/201/116 157/198/116 161/221/116 +f 145/202/117 144/199/117 161/222/117 +f 132/203/118 131/200/118 161/223/118 +f 159/141/119 158/201/119 161/224/119 +f 146/175/120 145/202/120 161/225/120 +f 133/177/121 132/203/121 161/226/121 +f 160/142/122 159/141/122 161/227/122 +f 147/176/123 146/175/123 161/228/123 +f 134/178/124 133/177/124 161/229/124 +f 130/179/125 160/142/125 161/230/125 +f 148/180/126 147/176/126 161/231/126 +f 135/181/127 134/178/127 161/232/127 +f 149/173/128 148/180/128 161/233/128 +f 136/182/129 135/181/129 161/234/129 +f 597/235/130 574/236/130 225/135/130 194/6/130 +f 574/236/131 562/237/131 224/131/131 225/135/131 +f 562/237/132 550/238/132 223/127/132 224/131/132 +f 550/238/133 538/239/133 222/123/133 223/127/133 +f 538/239/134 526/240/134 221/119/134 222/123/134 +f 526/240/135 514/241/135 220/115/135 221/119/135 +f 514/241/136 502/242/136 219/111/136 220/115/136 +f 502/242/137 490/243/137 218/107/137 219/111/137 +f 490/243/138 478/244/138 217/103/138 218/107/138 +f 478/244/139 466/245/139 216/99/139 217/103/139 +f 466/245/140 454/246/140 215/95/140 216/99/140 +f 454/246/141 442/247/141 214/91/141 215/95/141 +f 442/247/142 430/248/142 213/85/142 214/91/142 +f 609/249/143 418/250/143 212/83/143 195/89/143 +f 430/248/144 406/251/144 211/79/144 213/85/144 +f 418/250/145 394/252/145 210/77/145 212/83/145 +f 406/251/146 382/253/146 209/73/146 211/79/146 +f 394/252/147 370/254/147 208/71/147 210/77/147 +f 382/253/148 358/255/148 207/67/148 209/73/148 +f 370/254/149 346/256/149 206/65/149 208/71/149 +f 358/255/150 334/257/150 205/59/150 207/67/150 +f 346/256/151 322/258/151 204/57/151 206/65/151 +f 334/257/152 609/259/152 195/60/152 205/59/152 +f 322/258/153 310/260/153 203/51/153 204/57/153 +f 310/260/154 298/261/154 202/45/154 203/51/154 +f 298/261/155 286/262/155 201/39/155 202/45/155 +f 286/262/156 274/263/156 200/33/156 201/39/156 +f 274/263/157 262/264/157 199/27/157 200/33/157 +f 262/264/158 250/265/158 198/19/158 199/27/158 +f 250/265/159 238/266/159 197/16/159 198/19/159 +f 238/266/160 226/267/160 196/5/160 197/16/160 +f 226/267/161 597/235/161 194/6/161 196/5/161 +f 163/268/162 162/269/162 586/270/162 237/271/162 +f 237/271/163 586/270/163 587/272/163 236/273/163 +f 236/273/2 587/272/2 588/274/2 235/275/2 +f 235/275/2 588/274/2 589/276/2 234/277/2 +f 674/278/164 704/279/164 590/280/164 233/281/164 +f 233/281/2 590/280/2 591/282/2 232/283/2 +f 642/284/164 672/285/164 592/286/164 231/287/164 +f 231/287/2 592/286/2 593/288/2 230/289/2 +f 610/290/164 640/291/164 594/292/164 229/293/164 +f 229/293/2 594/292/2 595/294/2 228/295/2 +f 228/295/2 595/294/2 596/296/2 227/297/2 +f 227/297/165 596/296/165 597/235/165 226/267/165 +f 164/298/166 163/268/166 237/271/166 249/299/166 +f 249/299/167 237/271/167 236/273/167 248/300/167 +f 248/300/5 236/273/5 235/275/5 247/301/5 +f 247/301/5 235/275/5 234/277/5 246/302/5 +f 675/303/168 674/278/168 233/281/168 245/304/168 +f 245/304/5 233/281/5 232/283/5 244/305/5 +f 643/306/168 642/284/168 231/287/168 243/307/168 +f 243/307/5 231/287/5 230/289/5 242/308/5 +f 611/309/168 610/290/168 229/293/168 241/310/168 +f 241/310/5 229/293/5 228/295/5 240/311/5 +f 240/311/5 228/295/5 227/297/5 239/312/5 +f 239/312/169 227/297/169 226/267/169 238/266/169 +f 165/313/170 164/298/170 249/299/170 261/314/170 +f 261/314/171 249/299/171 248/300/171 260/315/171 +f 260/315/7 248/300/7 247/301/7 259/316/7 +f 259/316/7 247/301/7 246/302/7 258/317/7 +f 676/318/172 675/303/172 245/304/172 257/319/172 +f 257/319/7 245/304/7 244/305/7 256/320/7 +f 644/321/172 643/306/172 243/307/172 255/322/172 +f 255/322/7 243/307/7 242/308/7 254/323/7 +f 612/324/172 611/309/172 241/310/172 253/325/172 +f 253/325/7 241/310/7 240/311/7 252/326/7 +f 252/326/7 240/311/7 239/312/7 251/327/7 +f 251/327/173 239/312/173 238/266/173 250/265/173 +f 166/328/174 165/313/174 261/314/174 273/329/174 +f 273/329/175 261/314/175 260/315/175 272/330/175 +f 272/330/10 260/315/10 259/316/10 271/331/10 +f 271/331/10 259/316/10 258/317/10 270/332/10 +f 677/333/176 676/318/176 257/319/176 269/334/176 +f 269/334/10 257/319/10 256/320/10 268/335/10 +f 645/336/176 644/321/176 255/322/176 267/337/176 +f 267/337/10 255/322/10 254/323/10 266/338/10 +f 613/339/176 612/324/176 253/325/176 265/340/176 +f 265/340/10 253/325/10 252/326/10 264/341/10 +f 264/341/10 252/326/10 251/327/10 263/342/10 +f 263/342/177 251/327/177 250/265/177 262/264/177 +f 167/343/178 166/328/178 273/329/178 285/344/178 +f 285/344/179 273/329/179 272/330/179 284/345/179 +f 284/345/13 272/330/13 271/331/13 283/346/13 +f 283/346/13 271/331/13 270/332/13 282/347/13 +f 678/348/180 677/333/180 269/334/180 281/349/180 +f 281/349/13 269/334/13 268/335/13 280/350/13 +f 646/351/180 645/336/180 267/337/180 279/352/180 +f 279/352/13 267/337/13 266/338/13 278/353/13 +f 614/354/180 613/339/180 265/340/180 277/355/180 +f 277/355/13 265/340/13 264/341/13 276/356/13 +f 276/356/13 264/341/13 263/342/13 275/357/13 +f 275/357/181 263/342/181 262/264/181 274/263/181 +f 168/358/182 167/343/182 285/344/182 297/359/182 +f 297/359/183 285/344/183 284/345/183 296/360/183 +f 296/360/16 284/345/16 283/346/16 295/361/16 +f 295/361/16 283/346/16 282/347/16 294/362/16 +f 679/363/184 678/348/184 281/349/184 293/364/184 +f 293/364/16 281/349/16 280/350/16 292/365/16 +f 647/366/184 646/351/184 279/352/184 291/367/184 +f 291/367/16 279/352/16 278/353/16 290/368/16 +f 615/369/184 614/354/184 277/355/184 289/370/184 +f 289/370/16 277/355/16 276/356/16 288/371/16 +f 288/371/16 276/356/16 275/357/16 287/372/16 +f 287/372/185 275/357/185 274/263/185 286/262/185 +f 169/373/186 168/358/186 297/359/186 309/374/186 +f 309/374/187 297/359/187 296/360/187 308/375/187 +f 308/375/1 296/360/1 295/361/1 307/376/1 +f 307/376/1 295/361/1 294/362/1 306/377/1 +f 680/378/188 679/363/188 293/364/188 305/379/188 +f 305/379/1 293/364/1 292/365/1 304/380/1 +f 648/381/189 647/366/189 291/367/189 303/382/189 +f 303/382/1 291/367/1 290/368/1 302/383/1 +f 616/384/189 615/369/189 289/370/189 301/385/189 +f 301/385/1 289/370/1 288/371/1 300/386/1 +f 300/386/1 288/371/1 287/372/1 299/387/1 +f 299/387/190 287/372/190 286/262/190 298/261/190 +f 170/388/191 169/373/191 309/374/191 321/389/191 +f 321/389/192 309/374/192 308/375/192 320/390/192 +f 320/390/6 308/375/6 307/376/6 319/391/6 +f 319/391/6 307/376/6 306/377/6 318/392/6 +f 681/393/193 680/378/193 305/379/193 317/394/193 +f 317/394/6 305/379/6 304/380/6 316/395/6 +f 649/396/193 648/381/193 303/382/193 315/397/193 +f 315/397/6 303/382/6 302/383/6 314/398/6 +f 617/399/193 616/384/193 301/385/193 313/400/193 +f 313/400/6 301/385/6 300/386/6 312/401/6 +f 312/401/6 300/386/6 299/387/6 311/402/6 +f 311/402/194 299/387/194 298/261/194 310/260/194 +f 171/403/195 170/388/195 321/389/195 333/404/195 +f 333/404/196 321/389/196 320/390/196 332/405/196 +f 332/405/8 320/390/8 319/391/8 331/406/8 +f 331/406/8 319/391/8 318/392/8 330/407/8 +f 682/408/197 681/393/197 317/394/197 329/409/197 +f 329/409/8 317/394/8 316/395/8 328/410/8 +f 650/411/197 649/396/197 315/397/197 327/412/197 +f 327/412/8 315/397/8 314/398/8 326/413/8 +f 618/414/197 617/399/197 313/400/197 325/415/197 +f 325/415/8 313/400/8 312/401/8 324/416/8 +f 324/416/8 312/401/8 311/402/8 323/417/8 +f 323/417/198 311/402/198 310/260/198 322/258/198 +f 173/418/199 172/419/199 598/420/199 345/421/199 +f 345/421/200 598/420/200 599/422/200 344/423/200 +f 344/423/9 599/422/9 600/424/9 343/425/9 +f 343/425/9 600/424/9 601/426/9 342/427/9 +f 683/428/201 705/429/201 602/430/201 341/431/201 +f 341/431/9 602/430/9 603/432/9 340/433/9 +f 651/434/202 673/435/202 604/436/202 339/437/202 +f 339/437/9 604/436/9 605/438/9 338/439/9 +f 619/440/201 641/441/201 606/442/201 337/443/201 +f 337/443/9 606/442/9 607/444/9 336/445/9 +f 336/445/9 607/444/9 608/446/9 335/447/9 +f 335/447/203 608/446/203 609/259/203 334/257/203 +f 174/448/204 171/403/204 333/404/204 357/449/204 +f 357/449/205 333/404/205 332/405/205 356/450/205 +f 356/450/11 332/405/11 331/406/11 355/451/11 +f 355/451/11 331/406/11 330/407/11 354/452/11 +f 684/453/206 682/408/206 329/409/206 353/454/206 +f 353/454/11 329/409/11 328/410/11 352/455/11 +f 652/456/206 650/411/206 327/412/206 351/457/206 +f 351/457/11 327/412/11 326/413/11 350/458/11 +f 620/459/206 618/414/206 325/415/206 349/460/206 +f 349/460/11 325/415/11 324/416/11 348/461/11 +f 348/461/11 324/416/11 323/417/11 347/462/11 +f 347/462/207 323/417/207 322/258/207 346/256/207 +f 175/463/208 173/418/208 345/421/208 369/464/208 +f 369/464/209 345/421/209 344/423/209 368/465/209 +f 368/465/12 344/423/12 343/425/12 367/466/12 +f 367/466/12 343/425/12 342/427/12 366/467/12 +f 685/468/210 683/428/210 341/431/210 365/469/210 +f 365/469/12 341/431/12 340/433/12 364/470/12 +f 653/471/210 651/434/210 339/437/210 363/472/210 +f 363/472/12 339/437/12 338/439/12 362/473/12 +f 621/474/210 619/440/210 337/443/210 361/475/210 +f 361/475/12 337/443/12 336/445/12 360/476/12 +f 360/476/12 336/445/12 335/447/12 359/477/12 +f 359/477/211 335/447/211 334/257/211 358/255/211 +f 176/478/212 174/448/212 357/449/212 381/479/212 +f 381/479/213 357/449/213 356/450/213 380/480/213 +f 380/480/14 356/450/14 355/451/14 379/481/14 +f 379/481/14 355/451/14 354/452/14 378/482/14 +f 686/483/214 684/453/214 353/454/214 377/484/214 +f 377/484/14 353/454/14 352/455/14 376/485/14 +f 654/486/214 652/456/214 351/457/214 375/487/214 +f 375/487/14 351/457/14 350/458/14 374/488/14 +f 622/489/214 620/459/214 349/460/214 373/490/214 +f 373/490/14 349/460/14 348/461/14 372/491/14 +f 372/491/14 348/461/14 347/462/14 371/492/14 +f 371/492/215 347/462/215 346/256/215 370/254/215 +f 177/493/216 175/463/216 369/464/216 393/494/216 +f 393/494/217 369/464/217 368/465/217 392/495/217 +f 392/495/15 368/465/15 367/466/15 391/496/15 +f 391/496/15 367/466/15 366/467/15 390/497/15 +f 687/498/218 685/468/218 365/469/218 389/499/218 +f 389/499/15 365/469/15 364/470/15 388/500/15 +f 655/501/218 653/471/218 363/472/218 387/502/218 +f 387/502/15 363/472/15 362/473/15 386/503/15 +f 623/504/218 621/474/218 361/475/218 385/505/218 +f 385/505/15 361/475/15 360/476/15 384/506/15 +f 384/506/15 360/476/15 359/477/15 383/507/15 +f 383/507/219 359/477/219 358/255/219 382/253/219 +f 178/508/220 176/478/220 381/479/220 405/509/220 +f 405/509/221 381/479/221 380/480/221 404/510/221 +f 404/510/17 380/480/17 379/481/17 403/511/17 +f 403/511/17 379/481/17 378/482/17 402/512/17 +f 688/513/222 686/483/222 377/484/222 401/514/222 +f 401/514/17 377/484/17 376/485/17 400/515/17 +f 656/516/222 654/486/222 375/487/222 399/517/222 +f 399/517/17 375/487/17 374/488/17 398/518/17 +f 624/519/222 622/489/222 373/490/222 397/520/222 +f 397/520/17 373/490/17 372/491/17 396/521/17 +f 396/521/17 372/491/17 371/492/17 395/522/17 +f 395/522/223 371/492/223 370/254/223 394/252/223 +f 179/523/224 177/493/224 393/494/224 417/524/224 +f 417/524/225 393/494/225 392/495/225 416/525/225 +f 416/525/18 392/495/18 391/496/18 415/526/18 +f 415/526/18 391/496/18 390/497/18 414/527/18 +f 689/528/226 687/498/226 389/499/226 413/529/226 +f 413/529/18 389/499/18 388/500/18 412/530/18 +f 657/531/226 655/501/226 387/502/226 411/532/226 +f 411/532/18 387/502/18 386/503/18 410/533/18 +f 625/534/226 623/504/226 385/505/226 409/535/226 +f 409/535/18 385/505/18 384/506/18 408/536/18 +f 408/536/18 384/506/18 383/507/18 407/537/18 +f 407/537/227 383/507/227 382/253/227 406/251/227 +f 180/538/228 178/508/228 405/509/228 429/539/228 +f 429/539/229 405/509/229 404/510/229 428/540/229 +f 428/540/19 404/510/19 403/511/19 427/541/19 +f 427/541/19 403/511/19 402/512/19 426/542/19 +f 690/543/230 688/513/230 401/514/230 425/544/230 +f 425/544/19 401/514/19 400/515/19 424/545/19 +f 658/546/230 656/516/230 399/517/230 423/547/230 +f 423/547/19 399/517/19 398/518/19 422/548/19 +f 626/549/230 624/519/230 397/520/230 421/550/230 +f 421/550/19 397/520/19 396/521/19 420/551/19 +f 420/551/19 396/521/19 395/522/19 419/552/19 +f 419/552/231 395/522/231 394/252/231 418/250/231 +f 181/553/232 179/523/232 417/524/232 441/554/232 +f 441/554/233 417/524/233 416/525/233 440/555/233 +f 440/555/20 416/525/20 415/526/20 439/556/20 +f 439/556/20 415/526/20 414/527/20 438/557/20 +f 691/558/234 689/528/234 413/529/234 437/559/234 +f 437/559/20 413/529/20 412/530/20 436/560/20 +f 659/561/234 657/531/234 411/532/234 435/562/234 +f 435/562/20 411/532/20 410/533/20 434/563/20 +f 627/564/234 625/534/234 409/535/234 433/565/234 +f 433/565/20 409/535/20 408/536/20 432/566/20 +f 432/566/20 408/536/20 407/537/20 431/567/20 +f 431/567/235 407/537/235 406/251/235 430/248/235 +f 172/568/236 180/538/236 429/539/236 598/569/236 +f 598/569/237 429/539/237 428/540/237 599/570/237 +f 599/570/21 428/540/21 427/541/21 600/571/21 +f 600/571/21 427/541/21 426/542/21 601/572/21 +f 705/573/238 690/543/238 425/544/238 602/574/238 +f 602/574/21 425/544/21 424/545/21 603/575/21 +f 673/576/239 658/546/239 423/547/239 604/577/239 +f 604/577/21 423/547/21 422/548/21 605/578/21 +f 641/579/238 626/549/238 421/550/238 606/580/238 +f 606/580/21 421/550/21 420/551/21 607/581/21 +f 607/581/21 420/551/21 419/552/21 608/582/21 +f 608/582/240 419/552/240 418/250/240 609/249/240 +f 182/583/241 181/553/241 441/554/241 453/584/241 +f 453/584/242 441/554/242 440/555/242 452/585/242 +f 452/585/22 440/555/22 439/556/22 451/586/22 +f 451/586/22 439/556/22 438/557/22 450/587/22 +f 692/588/243 691/558/243 437/559/243 449/589/243 +f 449/589/22 437/559/22 436/560/22 448/590/22 +f 660/591/243 659/561/243 435/562/243 447/592/243 +f 447/592/22 435/562/22 434/563/22 446/593/22 +f 628/594/243 627/564/243 433/565/243 445/595/243 +f 445/595/22 433/565/22 432/566/22 444/596/22 +f 444/596/22 432/566/22 431/567/22 443/597/22 +f 443/597/244 431/567/244 430/248/244 442/247/244 +f 183/598/245 182/583/245 453/584/245 465/599/245 +f 465/599/246 453/584/246 452/585/246 464/600/246 +f 464/600/23 452/585/23 451/586/23 463/601/23 +f 463/601/23 451/586/23 450/587/23 462/602/23 +f 693/603/247 692/588/247 449/589/247 461/604/247 +f 461/604/23 449/589/23 448/590/23 460/605/23 +f 661/606/247 660/591/247 447/592/247 459/607/247 +f 459/607/23 447/592/23 446/593/23 458/608/23 +f 629/609/247 628/594/247 445/595/247 457/610/247 +f 457/610/23 445/595/23 444/596/23 456/611/23 +f 456/611/23 444/596/23 443/597/23 455/612/23 +f 455/612/248 443/597/248 442/247/248 454/246/248 +f 184/613/249 183/598/249 465/599/249 477/614/249 +f 477/614/250 465/599/250 464/600/250 476/615/250 +f 476/615/24 464/600/24 463/601/24 475/616/24 +f 475/616/24 463/601/24 462/602/24 474/617/24 +f 694/618/251 693/603/251 461/604/251 473/619/251 +f 473/619/24 461/604/24 460/605/24 472/620/24 +f 662/621/251 661/606/251 459/607/251 471/622/251 +f 471/622/24 459/607/24 458/608/24 470/623/24 +f 630/624/251 629/609/251 457/610/251 469/625/251 +f 469/625/24 457/610/24 456/611/24 468/626/24 +f 468/626/24 456/611/24 455/612/24 467/627/24 +f 467/627/252 455/612/252 454/246/252 466/245/252 +f 185/628/253 184/613/253 477/614/253 489/629/253 +f 489/629/254 477/614/254 476/615/254 488/630/254 +f 488/630/25 476/615/25 475/616/25 487/631/25 +f 487/631/25 475/616/25 474/617/25 486/632/25 +f 695/633/255 694/618/255 473/619/255 485/634/255 +f 485/634/25 473/619/25 472/620/25 484/635/25 +f 663/636/255 662/621/255 471/622/255 483/637/255 +f 483/637/25 471/622/25 470/623/25 482/638/25 +f 631/639/255 630/624/255 469/625/255 481/640/255 +f 481/640/25 469/625/25 468/626/25 480/641/25 +f 480/641/25 468/626/25 467/627/25 479/642/25 +f 479/642/256 467/627/256 466/245/256 478/244/256 +f 186/643/257 185/628/257 489/629/257 501/644/257 +f 501/644/258 489/629/258 488/630/258 500/645/258 +f 500/645/26 488/630/26 487/631/26 499/646/26 +f 499/646/26 487/631/26 486/632/26 498/647/26 +f 696/648/259 695/633/259 485/634/259 497/649/259 +f 497/649/26 485/634/26 484/635/26 496/650/26 +f 664/651/259 663/636/259 483/637/259 495/652/259 +f 495/652/26 483/637/26 482/638/26 494/653/26 +f 632/654/259 631/639/259 481/640/259 493/655/259 +f 493/655/26 481/640/26 480/641/26 492/656/26 +f 492/656/26 480/641/26 479/642/26 491/657/26 +f 491/657/260 479/642/260 478/244/260 490/243/260 +f 187/658/261 186/643/261 501/644/261 513/659/261 +f 513/659/262 501/644/262 500/645/262 512/660/262 +f 512/660/27 500/645/27 499/646/27 511/661/27 +f 511/661/27 499/646/27 498/647/27 510/662/27 +f 697/663/263 696/648/263 497/649/263 509/664/263 +f 509/664/27 497/649/27 496/650/27 508/665/27 +f 665/666/263 664/651/263 495/652/263 507/667/263 +f 507/667/27 495/652/27 494/653/27 506/668/27 +f 633/669/263 632/654/263 493/655/263 505/670/263 +f 505/670/27 493/655/27 492/656/27 504/671/27 +f 504/671/27 492/656/27 491/657/27 503/672/27 +f 503/672/264 491/657/264 490/243/264 502/242/264 +f 188/673/265 187/658/265 513/659/265 525/674/265 +f 525/674/266 513/659/266 512/660/266 524/675/266 +f 524/675/28 512/660/28 511/661/28 523/676/28 +f 523/676/28 511/661/28 510/662/28 522/677/28 +f 698/678/267 697/663/267 509/664/267 521/679/267 +f 521/679/28 509/664/28 508/665/28 520/680/28 +f 666/681/267 665/666/267 507/667/267 519/682/267 +f 519/682/28 507/667/28 506/668/28 518/683/28 +f 634/684/267 633/669/267 505/670/267 517/685/267 +f 517/685/28 505/670/28 504/671/28 516/686/28 +f 516/686/28 504/671/28 503/672/28 515/687/28 +f 515/687/268 503/672/268 502/242/268 514/241/268 +f 189/688/269 188/673/269 525/674/269 537/689/269 +f 537/689/270 525/674/270 524/675/270 536/690/270 +f 536/690/29 524/675/29 523/676/29 535/691/29 +f 535/691/29 523/676/29 522/677/29 534/692/29 +f 699/693/271 698/678/271 521/679/271 533/694/271 +f 533/694/29 521/679/29 520/680/29 532/695/29 +f 667/696/271 666/681/271 519/682/271 531/697/271 +f 531/697/29 519/682/29 518/683/29 530/698/29 +f 635/699/271 634/684/271 517/685/271 529/700/271 +f 529/700/29 517/685/29 516/686/29 528/701/29 +f 528/701/29 516/686/29 515/687/29 527/702/29 +f 527/702/272 515/687/272 514/241/272 526/240/272 +f 190/703/273 189/688/273 537/689/273 549/704/273 +f 549/704/274 537/689/274 536/690/274 548/705/274 +f 548/705/30 536/690/30 535/691/30 547/706/30 +f 547/706/30 535/691/30 534/692/30 546/707/30 +f 700/708/275 699/693/275 533/694/275 545/709/275 +f 545/709/30 533/694/30 532/695/30 544/710/30 +f 668/711/275 667/696/275 531/697/275 543/712/275 +f 543/712/30 531/697/30 530/698/30 542/713/30 +f 636/714/275 635/699/275 529/700/275 541/715/275 +f 541/715/30 529/700/30 528/701/30 540/716/30 +f 540/716/30 528/701/30 527/702/30 539/717/30 +f 539/717/276 527/702/276 526/240/276 538/239/276 +f 191/718/277 190/703/277 549/704/277 561/719/277 +f 561/719/278 549/704/278 548/705/278 560/720/278 +f 560/720/31 548/705/31 547/706/31 559/721/31 +f 559/721/31 547/706/31 546/707/31 558/722/31 +f 701/723/279 700/708/279 545/709/279 557/724/279 +f 557/724/31 545/709/31 544/710/31 556/725/31 +f 669/726/279 668/711/279 543/712/279 555/727/279 +f 555/727/31 543/712/31 542/713/31 554/728/31 +f 637/729/279 636/714/279 541/715/279 553/730/279 +f 553/730/31 541/715/31 540/716/31 552/731/31 +f 552/731/31 540/716/31 539/717/31 551/732/31 +f 551/732/280 539/717/280 538/239/280 550/238/280 +f 192/733/281 191/718/281 561/719/281 573/734/281 +f 573/734/282 561/719/282 560/720/282 572/735/282 +f 572/735/32 560/720/32 559/721/32 571/736/32 +f 571/736/32 559/721/32 558/722/32 570/737/32 +f 702/738/283 701/723/283 557/724/283 569/739/283 +f 569/739/32 557/724/32 556/725/32 568/740/32 +f 670/741/283 669/726/283 555/727/283 567/742/283 +f 567/742/32 555/727/32 554/728/32 566/743/32 +f 638/744/283 637/729/283 553/730/283 565/745/283 +f 565/745/32 553/730/32 552/731/32 564/746/32 +f 564/746/32 552/731/32 551/732/32 563/747/32 +f 563/747/284 551/732/284 550/238/284 562/237/284 +f 193/748/285 192/733/285 573/734/285 585/749/285 +f 585/749/286 573/734/286 572/735/286 584/750/286 +f 584/750/33 572/735/33 571/736/33 583/751/33 +f 583/751/33 571/736/33 570/737/33 582/752/33 +f 703/753/287 702/738/287 569/739/287 581/754/287 +f 581/754/33 569/739/33 568/740/33 580/755/33 +f 671/756/287 670/741/287 567/742/287 579/757/287 +f 579/757/33 567/742/33 566/743/33 578/758/33 +f 639/759/287 638/744/287 565/745/287 577/760/287 +f 577/760/33 565/745/33 564/746/33 576/761/33 +f 576/761/33 564/746/33 563/747/33 575/762/33 +f 575/762/288 563/747/288 562/237/288 574/236/288 +f 162/269/289 193/748/289 585/749/289 586/270/289 +f 586/270/290 585/749/290 584/750/290 587/272/290 +f 587/272/34 584/750/34 583/751/34 588/274/34 +f 588/274/34 583/751/34 582/752/34 589/276/34 +f 704/279/291 703/753/291 581/754/291 590/280/291 +f 590/280/34 581/754/34 580/755/34 591/282/34 +f 672/285/291 671/756/291 579/757/291 592/286/291 +f 592/286/34 579/757/34 578/758/34 593/288/34 +f 640/291/291 639/759/291 577/760/291 594/292/291 +f 594/292/34 577/760/34 576/761/34 595/294/34 +f 595/294/34 576/761/34 575/762/34 596/296/34 +f 596/296/292 575/762/292 574/236/292 597/235/292 +f 593/288/293 578/758/293 639/759/293 640/291/293 +f 578/758/294 566/743/294 638/744/294 639/759/294 +f 566/743/295 554/728/295 637/729/295 638/744/295 +f 554/728/296 542/713/296 636/714/296 637/729/296 +f 542/713/297 530/698/297 635/699/297 636/714/297 +f 530/698/298 518/683/298 634/684/298 635/699/298 +f 518/683/299 506/668/299 633/669/299 634/684/299 +f 506/668/300 494/653/300 632/654/300 633/669/300 +f 494/653/301 482/638/301 631/639/301 632/654/301 +f 482/638/302 470/623/302 630/624/302 631/639/302 +f 470/623/303 458/608/303 629/609/303 630/624/303 +f 458/608/304 446/593/304 628/594/304 629/609/304 +f 446/593/305 434/563/305 627/564/305 628/594/305 +f 605/578/306 422/548/306 626/549/306 641/579/306 +f 434/563/307 410/533/307 625/534/307 627/564/307 +f 422/548/308 398/518/308 624/519/308 626/549/308 +f 410/533/309 386/503/309 623/504/309 625/534/309 +f 398/518/310 374/488/310 622/489/310 624/519/310 +f 386/503/311 362/473/311 621/474/311 623/504/311 +f 374/488/312 350/458/312 620/459/312 622/489/312 +f 362/473/313 338/439/313 619/440/313 621/474/313 +f 350/458/314 326/413/314 618/414/314 620/459/314 +f 338/439/315 605/438/315 641/441/315 619/440/315 +f 326/413/316 314/398/316 617/399/316 618/414/316 +f 314/398/317 302/383/317 616/384/317 617/399/317 +f 302/383/318 290/368/318 615/369/318 616/384/318 +f 290/368/319 278/353/319 614/354/319 615/369/319 +f 278/353/320 266/338/320 613/339/320 614/354/320 +f 266/338/321 254/323/321 612/324/321 613/339/321 +f 254/323/322 242/308/322 611/309/322 612/324/322 +f 242/308/323 230/289/323 610/290/323 611/309/323 +f 230/289/324 593/288/324 640/291/324 610/290/324 +f 591/282/325 580/755/325 671/756/325 672/285/325 +f 580/755/294 568/740/294 670/741/294 671/756/294 +f 568/740/295 556/725/295 669/726/295 670/741/295 +f 556/725/296 544/710/296 668/711/296 669/726/296 +f 544/710/297 532/695/297 667/696/297 668/711/297 +f 532/695/298 520/680/298 666/681/298 667/696/298 +f 520/680/299 508/665/299 665/666/299 666/681/299 +f 508/665/300 496/650/300 664/651/300 665/666/300 +f 496/650/301 484/635/301 663/636/301 664/651/301 +f 484/635/302 472/620/302 662/621/302 663/636/302 +f 472/620/303 460/605/303 661/606/303 662/621/303 +f 460/605/304 448/590/304 660/591/304 661/606/304 +f 448/590/305 436/560/305 659/561/305 660/591/305 +f 603/575/306 424/545/306 658/546/306 673/576/306 +f 436/560/307 412/530/307 657/531/307 659/561/307 +f 424/545/308 400/515/308 656/516/308 658/546/308 +f 412/530/309 388/500/309 655/501/309 657/531/309 +f 400/515/310 376/485/310 654/486/310 656/516/310 +f 388/500/311 364/470/311 653/471/311 655/501/311 +f 376/485/312 352/455/312 652/456/312 654/486/312 +f 364/470/313 340/433/313 651/434/313 653/471/313 +f 352/455/314 328/410/314 650/411/314 652/456/314 +f 340/433/315 603/432/315 673/435/315 651/434/315 +f 328/410/316 316/395/316 649/396/316 650/411/316 +f 316/395/317 304/380/317 648/381/317 649/396/317 +f 304/380/318 292/365/318 647/366/318 648/381/318 +f 292/365/326 280/350/326 646/351/326 647/366/326 +f 280/350/320 268/335/320 645/336/320 646/351/320 +f 268/335/321 256/320/321 644/321/321 645/336/321 +f 256/320/322 244/305/322 643/306/322 644/321/322 +f 244/305/323 232/283/323 642/284/323 643/306/323 +f 232/283/324 591/282/324 672/285/324 642/284/324 +f 589/276/293 582/752/293 703/753/293 704/279/293 +f 582/752/294 570/737/294 702/738/294 703/753/294 +f 570/737/327 558/722/327 701/723/327 702/738/327 +f 558/722/296 546/707/296 700/708/296 701/723/296 +f 546/707/297 534/692/297 699/693/297 700/708/297 +f 534/692/298 522/677/298 698/678/298 699/693/298 +f 522/677/299 510/662/299 697/663/299 698/678/299 +f 510/662/300 498/647/300 696/648/300 697/663/300 +f 498/647/301 486/632/301 695/633/301 696/648/301 +f 486/632/328 474/617/328 694/618/328 695/633/328 +f 474/617/329 462/602/329 693/603/329 694/618/329 +f 462/602/304 450/587/304 692/588/304 693/603/304 +f 450/587/305 438/557/305 691/558/305 692/588/305 +f 601/572/306 426/542/306 690/543/306 705/573/306 +f 438/557/307 414/527/307 689/528/307 691/558/307 +f 426/542/308 402/512/308 688/513/308 690/543/308 +f 414/527/309 390/497/309 687/498/309 689/528/309 +f 402/512/310 378/482/310 686/483/310 688/513/310 +f 390/497/311 366/467/311 685/468/311 687/498/311 +f 378/482/312 354/452/312 684/453/312 686/483/312 +f 366/467/313 342/427/313 683/428/313 685/468/313 +f 354/452/314 330/407/314 682/408/314 684/453/314 +f 342/427/315 601/426/315 705/429/315 683/428/315 +f 330/407/316 318/392/316 681/393/316 682/408/316 +f 318/392/317 306/377/317 680/378/317 681/393/317 +f 306/377/318 294/362/318 679/363/318 680/378/318 +f 294/362/330 282/347/330 678/348/330 679/363/330 +f 282/347/331 270/332/331 677/333/331 678/348/331 +f 270/332/321 258/317/321 676/318/321 677/333/321 +f 258/317/322 246/302/322 675/303/322 676/318/322 +f 246/302/323 234/277/323 674/278/323 675/303/323 +f 234/277/324 589/276/324 704/279/324 674/278/324 +f 24/763/16 25/764/16 707/765/16 737/766/16 +f 23/767/13 24/763/13 737/766/13 736/768/13 +f 22/769/10 23/767/10 736/768/10 735/770/10 +f 21/771/7 22/769/7 735/770/7 734/772/7 +f 20/773/5 21/771/5 734/772/5 733/774/5 +f 19/775/2 20/773/2 733/774/2 732/776/2 +f 18/777/34 19/775/34 732/776/34 731/778/34 +f 17/779/33 18/777/33 731/778/33 730/780/33 +f 16/781/32 17/779/32 730/780/32 729/782/32 +f 15/783/31 16/781/31 729/782/31 728/784/31 +f 14/785/30 15/783/30 728/784/30 727/786/30 +f 13/787/29 14/785/29 727/786/29 726/788/29 +f 12/789/28 13/787/28 726/788/28 725/790/28 +f 11/791/27 12/789/27 725/790/27 724/792/27 +f 10/793/26 11/791/26 724/792/26 723/794/26 +f 9/795/25 10/793/25 723/794/25 722/796/25 +f 8/797/24 9/795/24 722/796/24 721/798/24 +f 7/799/23 8/797/23 721/798/23 720/800/23 +f 6/801/22 7/799/22 720/800/22 719/802/22 +f 32/803/21 1/804/21 711/805/21 718/806/21 +f 5/807/20 6/801/20 719/802/20 717/808/20 +f 31/809/19 32/803/19 718/806/19 716/810/19 +f 4/811/18 5/807/18 717/808/18 715/812/18 +f 30/813/17 31/809/17 716/810/17 714/814/17 +f 3/815/15 4/811/15 715/812/15 713/816/15 +f 29/817/14 30/813/14 714/814/14 712/818/14 +f 2/819/12 3/815/12 713/816/12 710/820/12 +f 28/821/11 29/817/11 712/818/11 709/822/11 +f 1/823/9 2/819/9 710/820/9 711/824/9 +f 27/825/8 28/821/8 709/822/8 708/826/8 +f 26/827/6 27/825/6 708/826/6 706/828/6 +f 25/764/1 26/827/1 706/828/1 707/765/1 +f 1025/829/332 770/830/332 768/1/332 767/137/332 +f 1017/831/333 1025/829/333 767/137/333 766/133/333 +f 1009/832/334 1017/831/334 766/133/334 765/129/334 +f 1001/833/335 1009/832/335 765/129/335 764/125/335 +f 993/834/336 1001/833/336 764/125/336 763/121/336 +f 985/835/337 993/834/337 763/121/337 762/117/337 +f 977/836/338 985/835/338 762/117/338 761/113/338 +f 969/837/339 977/836/339 761/113/339 760/109/339 +f 961/838/340 969/837/340 760/109/340 759/105/340 +f 953/839/341 961/838/341 759/105/341 758/101/341 +f 945/840/342 953/839/342 758/101/342 757/97/342 +f 937/841/343 945/840/343 757/97/343 756/93/343 +f 929/842/344 937/841/344 756/93/344 755/87/344 +f 921/843/345 929/842/345 755/87/345 754/81/345 +f 913/844/346 921/843/346 754/81/346 753/75/346 +f 905/845/347 913/844/347 753/75/347 752/69/347 +f 897/846/348 905/845/348 752/69/348 751/63/348 +f 889/847/349 897/846/349 751/63/349 750/55/349 +f 881/848/350 889/847/350 750/55/350 749/49/350 +f 873/849/351 778/850/351 769/53/351 748/47/351 +f 865/851/352 881/848/352 749/49/352 747/43/352 +f 857/852/353 873/849/353 748/47/353 746/41/353 +f 849/853/354 865/851/354 747/43/354 745/37/354 +f 841/854/355 857/852/355 746/41/355 744/35/355 +f 833/855/356 849/853/356 745/37/356 743/31/356 +f 825/856/357 841/854/357 744/35/357 742/29/357 +f 817/857/358 833/855/358 743/31/358 741/24/358 +f 809/858/359 825/856/359 742/29/359 740/21/359 +f 778/859/360 817/857/360 741/24/360 769/23/360 +f 801/860/361 809/858/361 740/21/361 739/17/361 +f 793/861/362 801/860/362 739/17/362 738/2/362 +f 770/830/363 793/861/363 738/2/363 768/1/363 +f 707/765/364 706/828/364 786/862/364 777/863/364 +f 777/863/365 786/862/365 787/864/365 776/865/365 +f 776/865/1 787/864/1 788/866/1 775/867/1 +f 1058/868/366 1060/869/366 789/870/366 774/871/366 +f 774/871/1 789/870/1 790/872/1 773/873/1 +f 1026/874/367 1028/875/367 791/876/367 772/877/367 +f 772/877/1 791/876/1 792/878/1 771/879/1 +f 771/879/368 792/878/368 793/861/368 770/830/368 +f 706/828/369 708/826/369 794/880/369 786/862/369 +f 786/862/370 794/880/370 795/881/370 787/864/370 +f 787/864/6 795/881/6 796/882/6 788/866/6 +f 1060/869/371 1061/883/371 797/884/371 789/870/371 +f 789/870/6 797/884/6 798/885/6 790/872/6 +f 1028/875/371 1029/886/371 799/887/371 791/876/371 +f 791/876/6 799/887/6 800/888/6 792/878/6 +f 792/878/372 800/888/372 801/860/372 793/861/372 +f 708/826/373 709/822/373 802/889/373 794/880/373 +f 794/880/374 802/889/374 803/890/374 795/881/374 +f 795/881/8 803/890/8 804/891/8 796/882/8 +f 1061/883/375 1062/892/375 805/893/375 797/884/375 +f 797/884/8 805/893/8 806/894/8 798/885/8 +f 1029/886/375 1030/895/375 807/896/375 799/887/375 +f 799/887/8 807/896/8 808/897/8 800/888/8 +f 800/888/376 808/897/376 809/858/376 801/860/376 +f 711/824/377 710/820/377 810/898/377 785/899/377 +f 785/899/378 810/898/378 811/900/378 784/901/378 +f 784/901/9 811/900/9 812/902/9 783/903/9 +f 1059/904/379 1063/905/379 813/906/379 782/907/379 +f 782/907/9 813/906/9 814/908/9 781/909/9 +f 1027/910/380 1031/911/380 815/912/380 780/913/380 +f 780/913/9 815/912/9 816/914/9 779/915/9 +f 779/915/381 816/914/381 817/857/381 778/859/381 +f 709/822/382 712/818/382 818/916/382 802/889/382 +f 802/889/383 818/916/383 819/917/383 803/890/383 +f 803/890/11 819/917/11 820/918/11 804/891/11 +f 1062/892/384 1064/919/384 821/920/384 805/893/384 +f 805/893/11 821/920/11 822/921/11 806/894/11 +f 1030/895/384 1032/922/384 823/923/384 807/896/384 +f 807/896/11 823/923/11 824/924/11 808/897/11 +f 808/897/385 824/924/385 825/856/385 809/858/385 +f 710/820/386 713/816/386 826/925/386 810/898/386 +f 810/898/387 826/925/387 827/926/387 811/900/387 +f 811/900/12 827/926/12 828/927/12 812/902/12 +f 1063/905/388 1065/928/388 829/929/388 813/906/388 +f 813/906/12 829/929/12 830/930/12 814/908/12 +f 1031/911/388 1033/931/388 831/932/388 815/912/388 +f 815/912/12 831/932/12 832/933/12 816/914/12 +f 816/914/389 832/933/389 833/855/389 817/857/389 +f 712/818/390 714/814/390 834/934/390 818/916/390 +f 818/916/391 834/934/391 835/935/391 819/917/391 +f 819/917/14 835/935/14 836/936/14 820/918/14 +f 1064/919/392 1066/937/392 837/938/392 821/920/392 +f 821/920/14 837/938/14 838/939/14 822/921/14 +f 1032/922/392 1034/940/392 839/941/392 823/923/392 +f 823/923/14 839/941/14 840/942/14 824/924/14 +f 824/924/393 840/942/393 841/854/393 825/856/393 +f 713/816/394 715/812/394 842/943/394 826/925/394 +f 826/925/395 842/943/395 843/944/395 827/926/395 +f 827/926/15 843/944/15 844/945/15 828/927/15 +f 1065/928/396 1067/946/396 845/947/396 829/929/396 +f 829/929/15 845/947/15 846/948/15 830/930/15 +f 1033/931/396 1035/949/396 847/950/396 831/932/396 +f 831/932/15 847/950/15 848/951/15 832/933/15 +f 832/933/397 848/951/397 849/853/397 833/855/397 +f 714/814/398 716/810/398 850/952/398 834/934/398 +f 834/934/399 850/952/399 851/953/399 835/935/399 +f 835/935/17 851/953/17 852/954/17 836/936/17 +f 1066/937/400 1068/955/400 853/956/400 837/938/400 +f 837/938/17 853/956/17 854/957/17 838/939/17 +f 1034/940/400 1036/958/400 855/959/400 839/941/400 +f 839/941/17 855/959/17 856/960/17 840/942/17 +f 840/942/401 856/960/401 857/852/401 841/854/401 +f 715/812/402 717/808/402 858/961/402 842/943/402 +f 842/943/403 858/961/403 859/962/403 843/944/403 +f 843/944/18 859/962/18 860/963/18 844/945/18 +f 1067/946/404 1069/964/404 861/965/404 845/947/404 +f 845/947/18 861/965/18 862/966/18 846/948/18 +f 1035/949/404 1037/967/404 863/968/404 847/950/404 +f 847/950/18 863/968/18 864/969/18 848/951/18 +f 848/951/405 864/969/405 865/851/405 849/853/405 +f 716/810/406 718/806/406 866/970/406 850/952/406 +f 850/952/407 866/970/407 867/971/407 851/953/407 +f 851/953/19 867/971/19 868/972/19 852/954/19 +f 1068/955/408 1070/973/408 869/974/408 853/956/408 +f 853/956/19 869/974/19 870/975/19 854/957/19 +f 1036/958/408 1038/976/408 871/977/408 855/959/408 +f 855/959/19 871/977/19 872/978/19 856/960/19 +f 856/960/409 872/978/409 873/849/409 857/852/409 +f 717/808/410 719/802/410 874/979/410 858/961/410 +f 858/961/411 874/979/411 875/980/411 859/962/411 +f 859/962/20 875/980/20 876/981/20 860/963/20 +f 1069/964/412 1071/982/412 877/983/412 861/965/412 +f 861/965/20 877/983/20 878/984/20 862/966/20 +f 1037/967/412 1039/985/412 879/986/412 863/968/412 +f 863/968/20 879/986/20 880/987/20 864/969/20 +f 864/969/413 880/987/413 881/848/413 865/851/413 +f 718/806/414 711/805/414 785/988/414 866/970/414 +f 866/970/415 785/988/415 784/989/415 867/971/415 +f 867/971/21 784/989/21 783/990/21 868/972/21 +f 1070/973/416 1059/991/416 782/992/416 869/974/416 +f 869/974/21 782/992/21 781/993/21 870/975/21 +f 1038/976/417 1027/994/417 780/995/417 871/977/417 +f 871/977/21 780/995/21 779/996/21 872/978/21 +f 872/978/418 779/996/418 778/850/418 873/849/418 +f 719/802/419 720/800/419 882/997/419 874/979/419 +f 874/979/420 882/997/420 883/998/420 875/980/420 +f 875/980/22 883/998/22 884/999/22 876/981/22 +f 1071/982/421 1072/1000/421 885/1001/421 877/983/421 +f 877/983/22 885/1001/22 886/1002/22 878/984/22 +f 1039/985/421 1040/1003/421 887/1004/421 879/986/421 +f 879/986/22 887/1004/22 888/1005/22 880/987/22 +f 880/987/422 888/1005/422 889/847/422 881/848/422 +f 720/800/423 721/798/423 890/1006/423 882/997/423 +f 882/997/424 890/1006/424 891/1007/424 883/998/424 +f 883/998/23 891/1007/23 892/1008/23 884/999/23 +f 1072/1000/425 1073/1009/425 893/1010/425 885/1001/425 +f 885/1001/23 893/1010/23 894/1011/23 886/1002/23 +f 1040/1003/425 1041/1012/425 895/1013/425 887/1004/425 +f 887/1004/23 895/1013/23 896/1014/23 888/1005/23 +f 888/1005/426 896/1014/426 897/846/426 889/847/426 +f 721/798/427 722/796/427 898/1015/427 890/1006/427 +f 890/1006/428 898/1015/428 899/1016/428 891/1007/428 +f 891/1007/24 899/1016/24 900/1017/24 892/1008/24 +f 1073/1009/429 1074/1018/429 901/1019/429 893/1010/429 +f 893/1010/24 901/1019/24 902/1020/24 894/1011/24 +f 1041/1012/429 1042/1021/429 903/1022/429 895/1013/429 +f 895/1013/24 903/1022/24 904/1023/24 896/1014/24 +f 896/1014/430 904/1023/430 905/845/430 897/846/430 +f 722/796/431 723/794/431 906/1024/431 898/1015/431 +f 898/1015/432 906/1024/432 907/1025/432 899/1016/432 +f 899/1016/25 907/1025/25 908/1026/25 900/1017/25 +f 1074/1018/433 1075/1027/433 909/1028/433 901/1019/433 +f 901/1019/25 909/1028/25 910/1029/25 902/1020/25 +f 1042/1021/433 1043/1030/433 911/1031/433 903/1022/433 +f 903/1022/25 911/1031/25 912/1032/25 904/1023/25 +f 904/1023/434 912/1032/434 913/844/434 905/845/434 +f 723/794/435 724/792/435 914/1033/435 906/1024/435 +f 906/1024/436 914/1033/436 915/1034/436 907/1025/436 +f 907/1025/26 915/1034/26 916/1035/26 908/1026/26 +f 1075/1027/437 1076/1036/437 917/1037/437 909/1028/437 +f 909/1028/26 917/1037/26 918/1038/26 910/1029/26 +f 1043/1030/437 1044/1039/437 919/1040/437 911/1031/437 +f 911/1031/26 919/1040/26 920/1041/26 912/1032/26 +f 912/1032/438 920/1041/438 921/843/438 913/844/438 +f 724/792/439 725/790/439 922/1042/439 914/1033/439 +f 914/1033/440 922/1042/440 923/1043/440 915/1034/440 +f 915/1034/27 923/1043/27 924/1044/27 916/1035/27 +f 1076/1036/441 1077/1045/441 925/1046/441 917/1037/441 +f 917/1037/27 925/1046/27 926/1047/27 918/1038/27 +f 1044/1039/441 1045/1048/441 927/1049/441 919/1040/441 +f 919/1040/27 927/1049/27 928/1050/27 920/1041/27 +f 920/1041/442 928/1050/442 929/842/442 921/843/442 +f 725/790/443 726/788/443 930/1051/443 922/1042/443 +f 922/1042/444 930/1051/444 931/1052/444 923/1043/444 +f 923/1043/28 931/1052/28 932/1053/28 924/1044/28 +f 1077/1045/445 1078/1054/445 933/1055/445 925/1046/445 +f 925/1046/28 933/1055/28 934/1056/28 926/1047/28 +f 1045/1048/445 1046/1057/445 935/1058/445 927/1049/445 +f 927/1049/28 935/1058/28 936/1059/28 928/1050/28 +f 928/1050/446 936/1059/446 937/841/446 929/842/446 +f 726/788/447 727/786/447 938/1060/447 930/1051/447 +f 930/1051/448 938/1060/448 939/1061/448 931/1052/448 +f 931/1052/29 939/1061/29 940/1062/29 932/1053/29 +f 1078/1054/449 1079/1063/449 941/1064/449 933/1055/449 +f 933/1055/29 941/1064/29 942/1065/29 934/1056/29 +f 1046/1057/449 1047/1066/449 943/1067/449 935/1058/449 +f 935/1058/29 943/1067/29 944/1068/29 936/1059/29 +f 936/1059/450 944/1068/450 945/840/450 937/841/450 +f 727/786/451 728/784/451 946/1069/451 938/1060/451 +f 938/1060/452 946/1069/452 947/1070/452 939/1061/452 +f 939/1061/30 947/1070/30 948/1071/30 940/1062/30 +f 1079/1063/453 1080/1072/453 949/1073/453 941/1064/453 +f 941/1064/30 949/1073/30 950/1074/30 942/1065/30 +f 1047/1066/453 1048/1075/453 951/1076/453 943/1067/453 +f 943/1067/30 951/1076/30 952/1077/30 944/1068/30 +f 944/1068/454 952/1077/454 953/839/454 945/840/454 +f 728/784/455 729/782/455 954/1078/455 946/1069/455 +f 946/1069/456 954/1078/456 955/1079/456 947/1070/456 +f 947/1070/31 955/1079/31 956/1080/31 948/1071/31 +f 1080/1072/457 1081/1081/457 957/1082/457 949/1073/457 +f 949/1073/31 957/1082/31 958/1083/31 950/1074/31 +f 1048/1075/457 1049/1084/457 959/1085/457 951/1076/457 +f 951/1076/31 959/1085/31 960/1086/31 952/1077/31 +f 952/1077/458 960/1086/458 961/838/458 953/839/458 +f 729/782/459 730/780/459 962/1087/459 954/1078/459 +f 954/1078/460 962/1087/460 963/1088/460 955/1079/460 +f 955/1079/32 963/1088/32 964/1089/32 956/1080/32 +f 1081/1081/461 1082/1090/461 965/1091/461 957/1082/461 +f 957/1082/32 965/1091/32 966/1092/32 958/1083/32 +f 1049/1084/461 1050/1093/461 967/1094/461 959/1085/461 +f 959/1085/32 967/1094/32 968/1095/32 960/1086/32 +f 960/1086/462 968/1095/462 969/837/462 961/838/462 +f 730/780/463 731/778/463 970/1096/463 962/1087/463 +f 962/1087/464 970/1096/464 971/1097/464 963/1088/464 +f 963/1088/33 971/1097/33 972/1098/33 964/1089/33 +f 1082/1090/465 1083/1099/465 973/1100/465 965/1091/465 +f 965/1091/33 973/1100/33 974/1101/33 966/1092/33 +f 1050/1093/465 1051/1102/465 975/1103/465 967/1094/465 +f 967/1094/33 975/1103/33 976/1104/33 968/1095/33 +f 968/1095/466 976/1104/466 977/836/466 969/837/466 +f 731/778/467 732/776/467 978/1105/467 970/1096/467 +f 970/1096/468 978/1105/468 979/1106/468 971/1097/468 +f 971/1097/34 979/1106/34 980/1107/34 972/1098/34 +f 1083/1099/469 1084/1108/469 981/1109/469 973/1100/469 +f 973/1100/34 981/1109/34 982/1110/34 974/1101/34 +f 1051/1102/470 1052/1111/470 983/1112/470 975/1103/470 +f 975/1103/34 983/1112/34 984/1113/34 976/1104/34 +f 976/1104/471 984/1113/471 985/835/471 977/836/471 +f 732/776/472 733/774/472 986/1114/472 978/1105/472 +f 978/1105/473 986/1114/473 987/1115/473 979/1106/473 +f 979/1106/2 987/1115/2 988/1116/2 980/1107/2 +f 1084/1108/474 1085/1117/474 989/1118/474 981/1109/474 +f 981/1109/2 989/1118/2 990/1119/2 982/1110/2 +f 1052/1111/474 1053/1120/474 991/1121/474 983/1112/474 +f 983/1112/2 991/1121/2 992/1122/2 984/1113/2 +f 984/1113/475 992/1122/475 993/834/475 985/835/475 +f 733/774/476 734/772/476 994/1123/476 986/1114/476 +f 986/1114/477 994/1123/477 995/1124/477 987/1115/477 +f 987/1115/5 995/1124/5 996/1125/5 988/1116/5 +f 1085/1117/478 1086/1126/478 997/1127/478 989/1118/478 +f 989/1118/5 997/1127/5 998/1128/5 990/1119/5 +f 1053/1120/479 1054/1129/479 999/1130/479 991/1121/479 +f 991/1121/5 999/1130/5 1000/1131/5 992/1122/5 +f 992/1122/480 1000/1131/480 1001/833/480 993/834/480 +f 734/772/481 735/770/481 1002/1132/481 994/1123/481 +f 994/1123/482 1002/1132/482 1003/1133/482 995/1124/482 +f 995/1124/7 1003/1133/7 1004/1134/7 996/1125/7 +f 1086/1126/483 1087/1135/483 1005/1136/483 997/1127/483 +f 997/1127/7 1005/1136/7 1006/1137/7 998/1128/7 +f 1054/1129/483 1055/1138/483 1007/1139/483 999/1130/483 +f 999/1130/7 1007/1139/7 1008/1140/7 1000/1131/7 +f 1000/1131/484 1008/1140/484 1009/832/484 1001/833/484 +f 735/770/485 736/768/485 1010/1141/485 1002/1132/485 +f 1002/1132/486 1010/1141/486 1011/1142/486 1003/1133/486 +f 1003/1133/10 1011/1142/10 1012/1143/10 1004/1134/10 +f 1087/1135/487 1088/1144/487 1013/1145/487 1005/1136/487 +f 1005/1136/10 1013/1145/10 1014/1146/10 1006/1137/10 +f 1055/1138/487 1056/1147/487 1015/1148/487 1007/1139/487 +f 1007/1139/10 1015/1148/10 1016/1149/10 1008/1140/10 +f 1008/1140/488 1016/1149/488 1017/831/488 1009/832/488 +f 736/768/489 737/766/489 1018/1150/489 1010/1141/489 +f 1010/1141/490 1018/1150/490 1019/1151/490 1011/1142/490 +f 1011/1142/13 1019/1151/13 1020/1152/13 1012/1143/13 +f 1088/1144/491 1089/1153/491 1021/1154/491 1013/1145/491 +f 1013/1145/13 1021/1154/13 1022/1155/13 1014/1146/13 +f 1056/1147/491 1057/1156/491 1023/1157/491 1015/1148/491 +f 1015/1148/13 1023/1157/13 1024/1158/13 1016/1149/13 +f 1016/1149/492 1024/1158/492 1025/829/492 1017/831/492 +f 737/766/493 707/765/493 777/863/493 1018/1150/493 +f 1018/1150/494 777/863/494 776/865/494 1019/1151/494 +f 1019/1151/16 776/865/16 775/867/16 1020/1152/16 +f 1089/1153/495 1058/868/495 774/871/495 1021/1154/495 +f 1021/1154/16 774/871/16 773/873/16 1022/1155/16 +f 1057/1156/496 1026/874/496 772/877/496 1023/1157/496 +f 1023/1157/16 772/877/16 771/879/16 1024/1158/16 +f 1024/1158/497 771/879/497 770/830/497 1025/829/497 +f 1022/1155/498 773/873/498 1026/874/498 1057/1156/498 +f 1014/1146/499 1022/1155/499 1057/1156/499 1056/1147/499 +f 1006/1137/500 1014/1146/500 1056/1147/500 1055/1138/500 +f 998/1128/501 1006/1137/501 1055/1138/501 1054/1129/501 +f 990/1119/502 998/1128/502 1054/1129/502 1053/1120/502 +f 982/1110/503 990/1119/503 1053/1120/503 1052/1111/503 +f 974/1101/504 982/1110/504 1052/1111/504 1051/1102/504 +f 966/1092/505 974/1101/505 1051/1102/505 1050/1093/505 +f 958/1083/506 966/1092/506 1050/1093/506 1049/1084/506 +f 950/1074/507 958/1083/507 1049/1084/507 1048/1075/507 +f 942/1065/508 950/1074/508 1048/1075/508 1047/1066/508 +f 934/1056/509 942/1065/509 1047/1066/509 1046/1057/509 +f 926/1047/510 934/1056/510 1046/1057/510 1045/1048/510 +f 918/1038/511 926/1047/511 1045/1048/511 1044/1039/511 +f 910/1029/512 918/1038/512 1044/1039/512 1043/1030/512 +f 902/1020/513 910/1029/513 1043/1030/513 1042/1021/513 +f 894/1011/514 902/1020/514 1042/1021/514 1041/1012/514 +f 886/1002/515 894/1011/515 1041/1012/515 1040/1003/515 +f 878/984/516 886/1002/516 1040/1003/516 1039/985/516 +f 870/975/517 781/993/517 1027/994/517 1038/976/517 +f 862/966/518 878/984/518 1039/985/518 1037/967/518 +f 854/957/519 870/975/519 1038/976/519 1036/958/519 +f 846/948/520 862/966/520 1037/967/520 1035/949/520 +f 838/939/521 854/957/521 1036/958/521 1034/940/521 +f 830/930/522 846/948/522 1035/949/522 1033/931/522 +f 822/921/523 838/939/523 1034/940/523 1032/922/523 +f 814/908/524 830/930/524 1033/931/524 1031/911/524 +f 806/894/525 822/921/525 1032/922/525 1030/895/525 +f 781/909/526 814/908/526 1031/911/526 1027/910/526 +f 798/885/527 806/894/527 1030/895/527 1029/886/527 +f 790/872/528 798/885/528 1029/886/528 1028/875/528 +f 773/873/529 790/872/529 1028/875/529 1026/874/529 +f 1020/1152/498 775/867/498 1058/868/498 1089/1153/498 +f 1012/1143/499 1020/1152/499 1089/1153/499 1088/1144/499 +f 1004/1134/500 1012/1143/500 1088/1144/500 1087/1135/500 +f 996/1125/501 1004/1134/501 1087/1135/501 1086/1126/501 +f 988/1116/502 996/1125/502 1086/1126/502 1085/1117/502 +f 980/1107/503 988/1116/503 1085/1117/503 1084/1108/503 +f 972/1098/504 980/1107/504 1084/1108/504 1083/1099/504 +f 964/1089/505 972/1098/505 1083/1099/505 1082/1090/505 +f 956/1080/506 964/1089/506 1082/1090/506 1081/1081/506 +f 948/1071/507 956/1080/507 1081/1081/507 1080/1072/507 +f 940/1062/508 948/1071/508 1080/1072/508 1079/1063/508 +f 932/1053/509 940/1062/509 1079/1063/509 1078/1054/509 +f 924/1044/510 932/1053/510 1078/1054/510 1077/1045/510 +f 916/1035/511 924/1044/511 1077/1045/511 1076/1036/511 +f 908/1026/512 916/1035/512 1076/1036/512 1075/1027/512 +f 900/1017/530 908/1026/530 1075/1027/530 1074/1018/530 +f 892/1008/514 900/1017/514 1074/1018/514 1073/1009/514 +f 884/999/515 892/1008/515 1073/1009/515 1072/1000/515 +f 876/981/531 884/999/531 1072/1000/531 1071/982/531 +f 868/972/517 783/990/517 1059/991/517 1070/973/517 +f 860/963/518 876/981/518 1071/982/518 1069/964/518 +f 852/954/519 868/972/519 1070/973/519 1068/955/519 +f 844/945/520 860/963/520 1069/964/520 1067/946/520 +f 836/936/521 852/954/521 1068/955/521 1066/937/521 +f 828/927/522 844/945/522 1067/946/522 1065/928/522 +f 820/918/523 836/936/523 1066/937/523 1064/919/523 +f 812/902/524 828/927/524 1065/928/524 1063/905/524 +f 804/891/525 820/918/525 1064/919/525 1062/892/525 +f 783/903/526 812/902/526 1063/905/526 1059/904/526 +f 796/882/532 804/891/532 1062/892/532 1061/883/532 +f 788/866/533 796/882/533 1061/883/533 1060/869/533 +f 775/867/529 788/866/529 1060/869/529 1058/868/529 +f 1215/1159/534 1186/1160/534 1148/1161/534 1147/1162/534 +f 1221/1163/535 1220/1164/535 1102/1165/535 1101/1166/535 +f 1218/10/536 1222/1167/536 1116/1168/536 1115/11/536 +f 1220/1164/537 1223/1169/537 1103/1170/537 1102/1165/537 +f 1222/1167/538 1224/1171/538 1117/1172/538 1116/1168/538 +f 1223/1169/539 1225/1173/539 1104/1174/539 1103/1170/539 +f 1227/1175/540 1226/1176/540 1091/1177/540 1090/1178/540 +f 1224/1171/541 1228/1179/541 1118/1180/541 1117/1172/541 +f 1225/1173/542 1229/1181/542 1105/1182/542 1104/1174/542 +f 1226/1176/543 1230/1183/543 1092/1184/543 1091/1177/543 +f 1228/1179/544 1231/1185/544 1119/1186/544 1118/1180/544 +f 1229/1181/545 1232/1187/545 1106/1188/545 1105/1182/545 +f 1230/1183/546 1233/1189/546 1093/1190/546 1092/1184/546 +f 1231/1185/547 1234/1191/547 1120/1192/547 1119/1186/547 +f 1232/1187/548 1235/1193/548 1107/1194/548 1106/1188/548 +f 1233/1189/549 1236/1195/549 1094/1196/549 1093/1190/549 +f 1234/1191/550 1237/1197/550 1121/1198/550 1120/1192/550 +f 1235/1193/551 1238/1199/551 1108/1200/551 1107/1194/551 +f 1236/1195/552 1239/1201/552 1095/1202/552 1094/1196/552 +f 1237/1197/553 1227/1203/553 1090/1204/553 1121/1198/553 +f 1238/1199/554 1240/1205/554 1109/1206/554 1108/1200/554 +f 1239/1201/555 1241/1207/555 1096/1208/555 1095/1202/555 +f 1240/1205/556 1242/1209/556 1110/1210/556 1109/1206/556 +f 1241/1207/557 1243/1211/557 1097/1212/557 1096/1208/557 +f 1242/1209/558 1244/1213/558 1111/1214/558 1110/1210/558 +f 1243/1211/559 1245/1215/559 1098/1216/559 1097/1212/559 +f 1244/1213/560 1246/1217/560 1112/1218/560 1111/1214/560 +f 1245/1215/561 1247/1219/561 1099/1220/561 1098/1216/561 +f 1246/1217/562 1248/1221/562 1113/1222/562 1112/1218/562 +f 1247/1219/563 1249/1223/563 1100/1224/563 1099/1220/563 +f 1248/1221/564 1219/9/564 1114/12/564 1113/1222/564 +f 1249/1223/565 1221/1163/565 1101/1166/565 1100/1224/565 +f 1122/1225/566 1123/1226/566 1124/1227/566 1125/1228/566 1126/1229/566 1127/1230/566 1128/1231/566 1129/1232/566 1130/1233/566 1131/1234/566 1132/1235/566 1133/1236/566 1134/1237/566 1135/1238/566 1136/1239/566 1137/1240/566 1138/1241/566 1139/1242/566 1140/1243/566 1141/1244/566 1142/1245/566 1143/1246/566 1144/1247/566 1145/1248/566 1146/1249/566 1147/1250/566 1148/1251/566 1149/1252/566 1150/1253/566 1151/1254/566 1152/1255/566 1153/1256/566 +f 1216/1257/567 1187/1258/567 1135/1259/567 1134/1260/567 +f 1186/1160/568 1188/1261/568 1149/1262/568 1148/1161/568 +f 1187/1258/569 1189/1263/569 1136/1264/569 1135/1259/569 +f 1217/1265/570 1190/1266/570 1123/1267/570 1122/1268/570 +f 1188/1261/571 1191/1269/571 1150/1270/571 1149/1262/571 +f 1189/1263/572 1192/1271/572 1137/1272/572 1136/1264/572 +f 1190/1266/573 1193/1273/573 1124/1274/573 1123/1267/573 +f 1191/1269/574 1194/1275/574 1151/1276/574 1150/1270/574 +f 1192/1271/575 1195/1277/575 1138/1278/575 1137/1272/575 +f 1193/1273/576 1196/1279/576 1125/1280/576 1124/1274/576 +f 1194/1275/577 1197/1281/577 1152/1282/577 1151/1276/577 +f 1195/1277/578 1198/1283/578 1139/1284/578 1138/1278/578 +f 1196/1279/579 1199/1285/579 1126/1286/579 1125/1280/579 +f 1197/1281/580 1200/1287/580 1153/1288/580 1152/1282/580 +f 1198/1283/581 1201/1289/581 1140/1290/581 1139/1284/581 +f 1199/1285/582 1202/1291/582 1127/1292/582 1126/1286/582 +f 1200/1287/583 1217/1293/583 1122/1294/583 1153/1288/583 +f 1201/1289/584 1203/1295/584 1141/1296/584 1140/1290/584 +f 1202/1291/585 1204/1297/585 1128/1298/585 1127/1292/585 +f 1203/1295/586 1205/1299/586 1142/1300/586 1141/1296/586 +f 1204/1297/587 1206/1301/587 1129/1302/587 1128/1298/587 +f 1205/1299/588 1207/1303/588 1143/1304/588 1142/1300/588 +f 1206/1301/589 1208/1305/589 1130/1306/589 1129/1302/589 +f 1207/1303/590 1209/1307/590 1144/1308/590 1143/1304/590 +f 1208/1305/591 1210/1309/591 1131/1310/591 1130/1306/591 +f 1209/1307/592 1211/1311/592 1145/1312/592 1144/1308/592 +f 1210/1309/593 1212/1313/593 1132/1314/593 1131/1310/593 +f 1211/1311/594 1213/1315/594 1146/1316/594 1145/1312/594 +f 1212/1313/595 1214/1317/595 1133/1318/595 1132/1314/595 +f 1213/1315/596 1215/1159/596 1147/1162/596 1146/1316/596 +f 1214/1317/597 1216/1257/597 1134/1260/597 1133/1318/597 +f 1310/1319/598 1312/1320/598 1157/1321/598 1185/1322/598 +f 1309/1323/599 1311/1324/599 1155/1325/599 1184/1326/599 +f 1308/1327/600 1310/1319/600 1185/1322/600 1183/1328/600 +f 1307/1329/601 1309/1323/601 1184/1326/601 1182/1330/601 +f 1306/1331/602 1308/1327/602 1183/1328/602 1181/1332/602 +f 1305/1333/603 1307/1329/603 1182/1330/603 1180/1334/603 +f 1304/1335/604 1306/1331/604 1181/1332/604 1179/1336/604 +f 1303/1337/605 1305/1333/605 1180/1334/605 1178/1338/605 +f 1302/1339/606 1304/1335/606 1179/1336/606 1177/1340/606 +f 1301/1341/607 1303/1337/607 1178/1338/607 1176/1342/607 +f 1300/1343/608 1302/1339/608 1177/1340/608 1175/1344/608 +f 1299/1345/609 1301/1341/609 1176/1342/609 1174/1346/609 +f 1298/1347/610 1300/1343/610 1175/1344/610 1173/1348/610 +f 1297/1349/611 1299/1345/611 1174/1346/611 1172/1350/611 +f 1296/1351/612 1313/1352/612 1161/1353/612 1171/1354/612 +f 1295/1355/613 1298/1347/613 1173/1348/613 1170/1356/613 +f 1294/1357/614 1297/1349/614 1172/1350/614 1169/1358/614 +f 1293/1359/615 1296/1351/615 1171/1354/615 1168/1360/615 +f 1292/1361/616 1295/1355/616 1170/1356/616 1167/1362/616 +f 1291/1363/617 1294/1357/617 1169/1358/617 1166/1364/617 +f 1290/1365/618 1293/1359/618 1168/1360/618 1165/1366/618 +f 1289/1367/619 1292/1361/619 1167/1362/619 1164/1368/619 +f 1288/1369/620 1291/1363/620 1166/1364/620 1163/1370/620 +f 1287/1371/621 1290/1365/621 1165/1366/621 1162/1372/621 +f 1286/1373/622 1289/1367/622 1164/1368/622 1160/1374/622 +f 1285/1375/623 1288/1369/623 1163/1370/623 1159/1376/623 +f 1284/1377/624 1287/1371/624 1162/1372/624 1158/1378/624 +f 1313/1379/625 1286/1373/625 1160/1374/625 1161/1380/625 +f 1283/1381/626 1285/1375/626 1159/1376/626 1156/1382/626 +f 1282/1383/627 1284/1377/627 1158/1378/627 1154/1384/627 +f 1312/1320/628 1283/1381/628 1156/1382/628 1157/1321/628 +f 1311/1324/629 1282/1383/629 1154/1384/629 1155/1325/629 +f 1185/1322/630 1157/1321/630 1216/1257/630 1214/1317/630 +f 1184/1326/631 1155/1325/631 1215/1159/631 1213/1315/631 +f 1183/1328/632 1185/1322/632 1214/1317/632 1212/1313/632 +f 1182/1330/633 1184/1326/633 1213/1315/633 1211/1311/633 +f 1181/1332/634 1183/1328/634 1212/1313/634 1210/1309/634 +f 1180/1334/635 1182/1330/635 1211/1311/635 1209/1307/635 +f 1179/1336/636 1181/1332/636 1210/1309/636 1208/1305/636 +f 1178/1338/637 1180/1334/637 1209/1307/637 1207/1303/637 +f 1177/1340/638 1179/1336/638 1208/1305/638 1206/1301/638 +f 1176/1342/639 1178/1338/639 1207/1303/639 1205/1299/639 +f 1175/1344/640 1177/1340/640 1206/1301/640 1204/1297/640 +f 1174/1346/641 1176/1342/641 1205/1299/641 1203/1295/641 +f 1173/1348/642 1175/1344/642 1204/1297/642 1202/1291/642 +f 1172/1350/643 1174/1346/643 1203/1295/643 1201/1289/643 +f 1171/1354/644 1161/1353/644 1217/1293/644 1200/1287/644 +f 1170/1356/645 1173/1348/645 1202/1291/645 1199/1285/645 +f 1169/1358/646 1172/1350/646 1201/1289/646 1198/1283/646 +f 1168/1360/647 1171/1354/647 1200/1287/647 1197/1281/647 +f 1167/1362/648 1170/1356/648 1199/1285/648 1196/1279/648 +f 1166/1364/649 1169/1358/649 1198/1283/649 1195/1277/649 +f 1165/1366/650 1168/1360/650 1197/1281/650 1194/1275/650 +f 1164/1368/651 1167/1362/651 1196/1279/651 1193/1273/651 +f 1163/1370/652 1166/1364/652 1195/1277/652 1192/1271/652 +f 1162/1372/653 1165/1366/653 1194/1275/653 1191/1269/653 +f 1160/1374/654 1164/1368/654 1193/1273/654 1190/1266/654 +f 1159/1376/655 1163/1370/655 1192/1271/655 1189/1263/655 +f 1158/1378/656 1162/1372/656 1191/1269/656 1188/1261/656 +f 1161/1380/657 1160/1374/657 1190/1266/657 1217/1265/657 +f 1156/1382/658 1159/1376/658 1189/1263/658 1187/1258/658 +f 1154/1384/659 1158/1378/659 1188/1261/659 1186/1160/659 +f 1157/1321/660 1156/1382/660 1187/1258/660 1216/1257/660 +f 1155/1325/661 1154/1384/661 1186/1160/661 1215/1159/661 +f 43/82/27 44/88/27 1221/1163/27 1249/1223/27 +f 56/138/16 57/4/16 1219/9/16 1248/1221/16 +f 42/76/26 43/82/26 1249/1223/26 1247/1219/26 +f 55/134/13 56/138/13 1248/1221/13 1246/1217/13 +f 41/70/25 42/76/25 1247/1219/25 1245/1215/25 +f 54/130/10 55/134/10 1246/1217/10 1244/1213/10 +f 40/64/24 41/70/24 1245/1215/24 1243/1211/24 +f 53/126/7 54/130/7 1244/1213/7 1242/1209/7 +f 39/56/23 40/64/23 1243/1211/23 1241/1207/23 +f 52/122/5 53/126/5 1242/1209/5 1240/1205/5 +f 38/50/22 39/56/22 1241/1207/22 1239/1201/22 +f 51/118/2 52/122/2 1240/1205/2 1238/1199/2 +f 64/48/21 33/54/21 1227/1203/21 1237/1197/21 +f 37/44/20 38/50/20 1239/1201/20 1236/1195/20 +f 50/114/34 51/118/34 1238/1199/34 1235/1193/34 +f 63/42/19 64/48/19 1237/1197/19 1234/1191/19 +f 36/38/18 37/44/18 1236/1195/18 1233/1189/18 +f 49/110/33 50/114/33 1235/1193/33 1232/1187/33 +f 62/36/17 63/42/17 1234/1191/17 1231/1185/17 +f 35/32/15 36/38/15 1233/1189/15 1230/1183/15 +f 48/106/32 49/110/32 1232/1187/32 1229/1181/32 +f 61/30/14 62/36/14 1231/1185/14 1228/1179/14 +f 34/25/12 35/32/12 1230/1183/12 1226/1176/12 +f 47/102/31 48/106/31 1229/1181/31 1225/1173/31 +f 60/22/11 61/30/11 1228/1179/11 1224/1171/11 +f 33/26/9 34/25/9 1226/1176/9 1227/1175/9 +f 46/98/30 47/102/30 1225/1173/30 1223/1169/30 +f 59/18/8 60/22/8 1224/1171/8 1222/1167/8 +f 45/94/29 46/98/29 1223/1169/29 1220/1164/29 +f 58/3/6 59/18/6 1222/1167/6 1218/10/6 +f 44/88/28 45/94/28 1220/1164/28 1221/1163/28 +f 57/4/1 58/3/1 1218/10/1 1219/9/1 +f 1115/11/662 1116/1168/662 1253/1385/662 1250/1386/662 +f 1102/1165/663 1103/1170/663 1254/1387/663 1251/1388/663 +f 1116/1168/664 1117/1172/664 1255/1389/664 1253/1385/664 +f 1103/1170/665 1104/1174/665 1256/1390/665 1254/1387/665 +f 1090/1178/666 1091/1177/666 1257/1391/666 1252/1392/666 +f 1117/1172/667 1118/1180/667 1258/1393/667 1255/1389/667 +f 1104/1174/668 1105/1182/668 1259/1394/668 1256/1390/668 +f 1091/1177/669 1092/1184/669 1260/1395/669 1257/1391/669 +f 1118/1180/670 1119/1186/670 1261/1396/670 1258/1393/670 +f 1105/1182/671 1106/1188/671 1262/1397/671 1259/1394/671 +f 1092/1184/672 1093/1190/672 1263/1398/672 1260/1395/672 +f 1119/1186/673 1120/1192/673 1264/1399/673 1261/1396/673 +f 1106/1188/674 1107/1194/674 1265/1400/674 1262/1397/674 +f 1093/1190/675 1094/1196/675 1266/1401/675 1263/1398/675 +f 1120/1192/676 1121/1198/676 1267/1402/676 1264/1399/676 +f 1107/1194/677 1108/1200/677 1268/1403/677 1265/1400/677 +f 1094/1196/678 1095/1202/678 1269/1404/678 1266/1401/678 +f 1121/1198/679 1090/1204/679 1252/1405/679 1267/1402/679 +f 1108/1200/680 1109/1206/680 1270/1406/680 1268/1403/680 +f 1095/1202/681 1096/1208/681 1271/1407/681 1269/1404/681 +f 1109/1206/682 1110/1210/682 1272/1408/682 1270/1406/682 +f 1096/1208/683 1097/1212/683 1273/1409/683 1271/1407/683 +f 1110/1210/684 1111/1214/684 1274/1410/684 1272/1408/684 +f 1097/1212/685 1098/1216/685 1275/1411/685 1273/1409/685 +f 1111/1214/686 1112/1218/686 1276/1412/686 1274/1410/686 +f 1098/1216/687 1099/1220/687 1277/1413/687 1275/1411/687 +f 1112/1218/688 1113/1222/688 1278/1414/688 1276/1412/688 +f 1099/1220/689 1100/1224/689 1279/1415/689 1277/1413/689 +f 1113/1222/690 1114/12/690 1280/1416/690 1278/1414/690 +f 1100/1224/691 1101/1166/691 1281/1417/691 1279/1415/691 +f 1114/12/692 1115/11/692 1250/1386/692 1280/1416/692 +f 1101/1166/693 1102/1165/693 1251/1388/693 1281/1417/693 +f 1314/1418/694 1361/1419/694 1282/1383/694 1311/1324/694 +f 1326/1420/695 1373/1421/695 1283/1381/695 1312/1320/695 +f 1361/1419/696 1385/1422/696 1284/1377/696 1282/1383/696 +f 1373/1421/697 1397/1423/697 1285/1375/697 1283/1381/697 +f 1338/1424/698 1409/1425/698 1286/1373/698 1313/1379/698 +f 1385/1422/699 1421/1426/699 1287/1371/699 1284/1377/699 +f 1397/1423/700 1433/1427/700 1288/1369/700 1285/1375/700 +f 1409/1425/701 1445/1428/701 1289/1367/701 1286/1373/701 +f 1421/1426/702 1457/1429/702 1290/1365/702 1287/1371/702 +f 1433/1427/703 1469/1430/703 1291/1363/703 1288/1369/703 +f 1445/1428/704 1481/1431/704 1292/1361/704 1289/1367/704 +f 1457/1429/705 1493/1432/705 1293/1359/705 1290/1365/705 +f 1469/1430/706 1505/1433/706 1294/1357/706 1291/1363/706 +f 1481/1431/707 1517/1434/707 1295/1355/707 1292/1361/707 +f 1493/1432/708 1529/1435/708 1296/1351/708 1293/1359/708 +f 1505/1433/709 1541/1436/709 1297/1349/709 1294/1357/709 +f 1517/1434/710 1553/1437/710 1298/1347/710 1295/1355/710 +f 1529/1435/711 1338/1438/711 1313/1352/711 1296/1351/711 +f 1541/1436/712 1565/1439/712 1299/1345/712 1297/1349/712 +f 1553/1437/713 1577/1440/713 1300/1343/713 1298/1347/713 +f 1565/1439/714 1589/1441/714 1301/1341/714 1299/1345/714 +f 1577/1440/715 1601/1442/715 1302/1339/715 1300/1343/715 +f 1589/1441/716 1613/1443/716 1303/1337/716 1301/1341/716 +f 1601/1442/717 1625/1444/717 1304/1335/717 1302/1339/717 +f 1613/1443/718 1637/1445/718 1305/1333/718 1303/1337/718 +f 1625/1444/719 1649/1446/719 1306/1331/719 1304/1335/719 +f 1637/1445/720 1661/1447/720 1307/1329/720 1305/1333/720 +f 1649/1446/721 1673/1448/721 1308/1327/721 1306/1331/721 +f 1661/1447/722 1685/1449/722 1309/1323/722 1307/1329/722 +f 1673/1448/723 1697/1450/723 1310/1319/723 1308/1327/723 +f 1685/1449/724 1314/1418/724 1311/1324/724 1309/1323/724 +f 1697/1450/725 1326/1420/725 1312/1320/725 1310/1319/725 +f 1281/1417/726 1251/1388/726 1337/1451/726 1686/1452/726 +f 1686/1452/727 1337/1451/727 1336/1453/727 1687/1454/727 +f 1687/1454/728 1336/1453/728 1335/1455/728 1688/1456/728 +f 1688/1456/729 1335/1455/729 1334/1457/729 1689/1458/729 +f 1689/1458/728 1334/1457/728 1333/1459/728 1690/1460/728 +f 1690/1460/729 1333/1459/729 1332/1461/729 1691/1462/729 +f 1691/1462/730 1332/1461/730 1331/1463/730 1692/1464/730 +f 1692/1464/731 1331/1463/731 1330/1465/731 1693/1466/731 +f 1693/1466/728 1330/1465/728 1329/1467/728 1694/1468/728 +f 1694/1468/729 1329/1467/729 1328/1469/729 1695/1470/729 +f 1695/1470/728 1328/1469/728 1327/1471/728 1696/1472/728 +f 1696/1472/729 1327/1471/729 1326/1420/729 1697/1450/729 +f 1280/1416/732 1250/1386/732 1325/1473/732 1674/1474/732 +f 1674/1474/733 1325/1473/733 1324/1475/733 1675/1476/733 +f 1675/1476/734 1324/1475/734 1323/1477/734 1676/1478/734 +f 1676/1478/735 1323/1477/735 1322/1479/735 1677/1480/735 +f 1677/1480/734 1322/1479/734 1321/1481/734 1678/1482/734 +f 1678/1482/735 1321/1481/735 1320/1483/735 1679/1484/735 +f 1679/1484/736 1320/1483/736 1319/1485/736 1680/1486/736 +f 1680/1486/737 1319/1485/737 1318/1487/737 1681/1488/737 +f 1681/1488/734 1318/1487/734 1317/1489/734 1682/1490/734 +f 1682/1490/735 1317/1489/735 1316/1491/735 1683/1492/735 +f 1683/1492/738 1316/1491/738 1315/1493/738 1684/1494/738 +f 1684/1494/735 1315/1493/735 1314/1418/735 1685/1449/735 +f 1279/1415/739 1281/1417/739 1686/1452/739 1662/1495/739 +f 1662/1495/740 1686/1452/740 1687/1454/740 1663/1496/740 +f 1663/1496/741 1687/1454/741 1688/1456/741 1664/1497/741 +f 1664/1497/742 1688/1456/742 1689/1458/742 1665/1498/742 +f 1665/1498/741 1689/1458/741 1690/1460/741 1666/1499/741 +f 1666/1499/742 1690/1460/742 1691/1462/742 1667/1500/742 +f 1667/1500/743 1691/1462/743 1692/1464/743 1668/1501/743 +f 1668/1501/744 1692/1464/744 1693/1466/744 1669/1502/744 +f 1669/1502/741 1693/1466/741 1694/1468/741 1670/1503/741 +f 1670/1503/745 1694/1468/745 1695/1470/745 1671/1504/745 +f 1671/1504/741 1695/1470/741 1696/1472/741 1672/1505/741 +f 1672/1505/745 1696/1472/745 1697/1450/745 1673/1448/745 +f 1278/1414/746 1280/1416/746 1674/1474/746 1650/1506/746 +f 1650/1506/747 1674/1474/747 1675/1476/747 1651/1507/747 +f 1651/1507/748 1675/1476/748 1676/1478/748 1652/1508/748 +f 1652/1508/749 1676/1478/749 1677/1480/749 1653/1509/749 +f 1653/1509/748 1677/1480/748 1678/1482/748 1654/1510/748 +f 1654/1510/749 1678/1482/749 1679/1484/749 1655/1511/749 +f 1655/1511/750 1679/1484/750 1680/1486/750 1656/1512/750 +f 1656/1512/751 1680/1486/751 1681/1488/751 1657/1513/751 +f 1657/1513/748 1681/1488/748 1682/1490/748 1658/1514/748 +f 1658/1514/749 1682/1490/749 1683/1492/749 1659/1515/749 +f 1659/1515/748 1683/1492/748 1684/1494/748 1660/1516/748 +f 1660/1516/749 1684/1494/749 1685/1449/749 1661/1447/749 +f 1277/1413/752 1279/1415/752 1662/1495/752 1638/1517/752 +f 1638/1517/753 1662/1495/753 1663/1496/753 1639/1518/753 +f 1639/1518/754 1663/1496/754 1664/1497/754 1640/1519/754 +f 1640/1519/755 1664/1497/755 1665/1498/755 1641/1520/755 +f 1641/1520/754 1665/1498/754 1666/1499/754 1642/1521/754 +f 1642/1521/756 1666/1499/756 1667/1500/756 1643/1522/756 +f 1643/1522/757 1667/1500/757 1668/1501/757 1644/1523/757 +f 1644/1523/758 1668/1501/758 1669/1502/758 1645/1524/758 +f 1645/1524/759 1669/1502/759 1670/1503/759 1646/1525/759 +f 1646/1525/756 1670/1503/756 1671/1504/756 1647/1526/756 +f 1647/1526/759 1671/1504/759 1672/1505/759 1648/1527/759 +f 1648/1527/755 1672/1505/755 1673/1448/755 1649/1446/755 +f 1276/1412/760 1278/1414/760 1650/1506/760 1626/1528/760 +f 1626/1528/761 1650/1506/761 1651/1507/761 1627/1529/761 +f 1627/1529/762 1651/1507/762 1652/1508/762 1628/1530/762 +f 1628/1530/763 1652/1508/763 1653/1509/763 1629/1531/763 +f 1629/1531/764 1653/1509/764 1654/1510/764 1630/1532/764 +f 1630/1532/765 1654/1510/765 1655/1511/765 1631/1533/765 +f 1631/1533/766 1655/1511/766 1656/1512/766 1632/1534/766 +f 1632/1534/767 1656/1512/767 1657/1513/767 1633/1535/767 +f 1633/1535/762 1657/1513/762 1658/1514/762 1634/1536/762 +f 1634/1536/763 1658/1514/763 1659/1515/763 1635/1537/763 +f 1635/1537/762 1659/1515/762 1660/1516/762 1636/1538/762 +f 1636/1538/763 1660/1516/763 1661/1447/763 1637/1445/763 +f 1275/1411/768 1277/1413/768 1638/1517/768 1614/1539/768 +f 1614/1539/769 1638/1517/769 1639/1518/769 1615/1540/769 +f 1615/1540/770 1639/1518/770 1640/1519/770 1616/1541/770 +f 1616/1541/771 1640/1519/771 1641/1520/771 1617/1542/771 +f 1617/1542/770 1641/1520/770 1642/1521/770 1618/1543/770 +f 1618/1543/771 1642/1521/771 1643/1522/771 1619/1544/771 +f 1619/1544/772 1643/1522/772 1644/1523/772 1620/1545/772 +f 1620/1545/773 1644/1523/773 1645/1524/773 1621/1546/773 +f 1621/1546/770 1645/1524/770 1646/1525/770 1622/1547/770 +f 1622/1547/771 1646/1525/771 1647/1526/771 1623/1548/771 +f 1623/1548/770 1647/1526/770 1648/1527/770 1624/1549/770 +f 1624/1549/771 1648/1527/771 1649/1446/771 1625/1444/771 +f 1274/1410/774 1276/1412/774 1626/1528/774 1602/1550/774 +f 1602/1550/775 1626/1528/775 1627/1529/775 1603/1551/775 +f 1603/1551/776 1627/1529/776 1628/1530/776 1604/1552/776 +f 1604/1552/777 1628/1530/777 1629/1531/777 1605/1553/777 +f 1605/1553/778 1629/1531/778 1630/1532/778 1606/1554/778 +f 1606/1554/777 1630/1532/777 1631/1533/777 1607/1555/777 +f 1607/1555/779 1631/1533/779 1632/1534/779 1608/1556/779 +f 1608/1556/780 1632/1534/780 1633/1535/780 1609/1557/780 +f 1609/1557/776 1633/1535/776 1634/1536/776 1610/1558/776 +f 1610/1558/781 1634/1536/781 1635/1537/781 1611/1559/781 +f 1611/1559/776 1635/1537/776 1636/1538/776 1612/1560/776 +f 1612/1560/781 1636/1538/781 1637/1445/781 1613/1443/781 +f 1273/1409/782 1275/1411/782 1614/1539/782 1590/1561/782 +f 1590/1561/783 1614/1539/783 1615/1540/783 1591/1562/783 +f 1591/1562/784 1615/1540/784 1616/1541/784 1592/1563/784 +f 1592/1563/785 1616/1541/785 1617/1542/785 1593/1564/785 +f 1593/1564/784 1617/1542/784 1618/1543/784 1594/1565/784 +f 1594/1565/785 1618/1543/785 1619/1544/785 1595/1566/785 +f 1595/1566/786 1619/1544/786 1620/1545/786 1596/1567/786 +f 1596/1567/787 1620/1545/787 1621/1546/787 1597/1568/787 +f 1597/1568/784 1621/1546/784 1622/1547/784 1598/1569/784 +f 1598/1569/785 1622/1547/785 1623/1548/785 1599/1570/785 +f 1599/1570/784 1623/1548/784 1624/1549/784 1600/1571/784 +f 1600/1571/785 1624/1549/785 1625/1444/785 1601/1442/785 +f 1272/1408/788 1274/1410/788 1602/1550/788 1578/1572/788 +f 1578/1572/789 1602/1550/789 1603/1551/789 1579/1573/789 +f 1579/1573/790 1603/1551/790 1604/1552/790 1580/1574/790 +f 1580/1574/791 1604/1552/791 1605/1553/791 1581/1575/791 +f 1581/1575/790 1605/1553/790 1606/1554/790 1582/1576/790 +f 1582/1576/791 1606/1554/791 1607/1555/791 1583/1577/791 +f 1583/1577/792 1607/1555/792 1608/1556/792 1584/1578/792 +f 1584/1578/793 1608/1556/793 1609/1557/793 1585/1579/793 +f 1585/1579/790 1609/1557/790 1610/1558/790 1586/1580/790 +f 1586/1580/791 1610/1558/791 1611/1559/791 1587/1581/791 +f 1587/1581/790 1611/1559/790 1612/1560/790 1588/1582/790 +f 1588/1582/791 1612/1560/791 1613/1443/791 1589/1441/791 +f 1271/1407/794 1273/1409/794 1590/1561/794 1566/1583/794 +f 1566/1583/795 1590/1561/795 1591/1562/795 1567/1584/795 +f 1567/1584/796 1591/1562/796 1592/1563/796 1568/1585/796 +f 1568/1585/797 1592/1563/797 1593/1564/797 1569/1586/797 +f 1569/1586/798 1593/1564/798 1594/1565/798 1570/1587/798 +f 1570/1587/799 1594/1565/799 1595/1566/799 1571/1588/799 +f 1571/1588/800 1595/1566/800 1596/1567/800 1572/1589/800 +f 1572/1589/801 1596/1567/801 1597/1568/801 1573/1590/801 +f 1573/1590/796 1597/1568/796 1598/1569/796 1574/1591/796 +f 1574/1591/797 1598/1569/797 1599/1570/797 1575/1592/797 +f 1575/1592/796 1599/1570/796 1600/1571/796 1576/1593/796 +f 1576/1593/797 1600/1571/797 1601/1442/797 1577/1440/797 +f 1270/1406/802 1272/1408/802 1578/1572/802 1554/1594/802 +f 1554/1594/803 1578/1572/803 1579/1573/803 1555/1595/803 +f 1555/1595/804 1579/1573/804 1580/1574/804 1556/1596/804 +f 1556/1596/805 1580/1574/805 1581/1575/805 1557/1597/805 +f 1557/1597/804 1581/1575/804 1582/1576/804 1558/1598/804 +f 1558/1598/805 1582/1576/805 1583/1577/805 1559/1599/805 +f 1559/1599/806 1583/1577/806 1584/1578/806 1560/1600/806 +f 1560/1600/807 1584/1578/807 1585/1579/807 1561/1601/807 +f 1561/1601/804 1585/1579/804 1586/1580/804 1562/1602/804 +f 1562/1602/805 1586/1580/805 1587/1581/805 1563/1603/805 +f 1563/1603/804 1587/1581/804 1588/1582/804 1564/1604/804 +f 1564/1604/805 1588/1582/805 1589/1441/805 1565/1439/805 +f 1269/1404/808 1271/1407/808 1566/1583/808 1542/1605/808 +f 1542/1605/809 1566/1583/809 1567/1584/809 1543/1606/809 +f 1543/1606/810 1567/1584/810 1568/1585/810 1544/1607/810 +f 1544/1607/811 1568/1585/811 1569/1586/811 1545/1608/811 +f 1545/1608/810 1569/1586/810 1570/1587/810 1546/1609/810 +f 1546/1609/811 1570/1587/811 1571/1588/811 1547/1610/811 +f 1547/1610/812 1571/1588/812 1572/1589/812 1548/1611/812 +f 1548/1611/813 1572/1589/813 1573/1590/813 1549/1612/813 +f 1549/1612/814 1573/1590/814 1574/1591/814 1550/1613/814 +f 1550/1613/811 1574/1591/811 1575/1592/811 1551/1614/811 +f 1551/1614/810 1575/1592/810 1576/1593/810 1552/1615/810 +f 1552/1615/815 1576/1593/815 1577/1440/815 1553/1437/815 +f 1268/1403/816 1270/1406/816 1554/1594/816 1530/1616/816 +f 1530/1616/817 1554/1594/817 1555/1595/817 1531/1617/817 +f 1531/1617/818 1555/1595/818 1556/1596/818 1532/1618/818 +f 1532/1618/819 1556/1596/819 1557/1597/819 1533/1619/819 +f 1533/1619/818 1557/1597/818 1558/1598/818 1534/1620/818 +f 1534/1620/819 1558/1598/819 1559/1599/819 1535/1621/819 +f 1535/1621/820 1559/1599/820 1560/1600/820 1536/1622/820 +f 1536/1622/821 1560/1600/821 1561/1601/821 1537/1623/821 +f 1537/1623/818 1561/1601/818 1562/1602/818 1538/1624/818 +f 1538/1624/822 1562/1602/822 1563/1603/822 1539/1625/822 +f 1539/1625/818 1563/1603/818 1564/1604/818 1540/1626/818 +f 1540/1626/822 1564/1604/822 1565/1439/822 1541/1436/822 +f 1267/1402/823 1252/1405/823 1349/1627/823 1518/1628/823 +f 1518/1628/824 1349/1627/824 1348/1629/824 1519/1630/824 +f 1519/1630/825 1348/1629/825 1347/1631/825 1520/1632/825 +f 1520/1632/826 1347/1631/826 1346/1633/826 1521/1634/826 +f 1521/1634/825 1346/1633/825 1345/1635/825 1522/1636/825 +f 1522/1636/826 1345/1635/826 1344/1637/826 1523/1638/826 +f 1523/1638/827 1344/1637/827 1343/1639/827 1524/1640/827 +f 1524/1640/828 1343/1639/828 1342/1641/828 1525/1642/828 +f 1525/1642/825 1342/1641/825 1341/1643/825 1526/1644/825 +f 1526/1644/826 1341/1643/826 1340/1645/826 1527/1646/826 +f 1527/1646/825 1340/1645/825 1339/1647/825 1528/1648/825 +f 1528/1648/829 1339/1647/829 1338/1438/829 1529/1435/829 +f 1266/1401/830 1269/1404/830 1542/1605/830 1506/1649/830 +f 1506/1649/831 1542/1605/831 1543/1606/831 1507/1650/831 +f 1507/1650/832 1543/1606/832 1544/1607/832 1508/1651/832 +f 1508/1651/833 1544/1607/833 1545/1608/833 1509/1652/833 +f 1509/1652/832 1545/1608/832 1546/1609/832 1510/1653/832 +f 1510/1653/833 1546/1609/833 1547/1610/833 1511/1654/833 +f 1511/1654/834 1547/1610/834 1548/1611/834 1512/1655/834 +f 1512/1655/835 1548/1611/835 1549/1612/835 1513/1656/835 +f 1513/1656/832 1549/1612/832 1550/1613/832 1514/1657/832 +f 1514/1657/833 1550/1613/833 1551/1614/833 1515/1658/833 +f 1515/1658/832 1551/1614/832 1552/1615/832 1516/1659/832 +f 1516/1659/833 1552/1615/833 1553/1437/833 1517/1434/833 +f 1265/1400/836 1268/1403/836 1530/1616/836 1494/1660/836 +f 1494/1660/837 1530/1616/837 1531/1617/837 1495/1661/837 +f 1495/1661/838 1531/1617/838 1532/1618/838 1496/1662/838 +f 1496/1662/839 1532/1618/839 1533/1619/839 1497/1663/839 +f 1497/1663/840 1533/1619/840 1534/1620/840 1498/1664/840 +f 1498/1664/839 1534/1620/839 1535/1621/839 1499/1665/839 +f 1499/1665/841 1535/1621/841 1536/1622/841 1500/1666/841 +f 1500/1666/842 1536/1622/842 1537/1623/842 1501/1667/842 +f 1501/1667/838 1537/1623/838 1538/1624/838 1502/1668/838 +f 1502/1668/843 1538/1624/843 1539/1625/843 1503/1669/843 +f 1503/1669/838 1539/1625/838 1540/1626/838 1504/1670/838 +f 1504/1670/843 1540/1626/843 1541/1436/843 1505/1433/843 +f 1264/1399/844 1267/1402/844 1518/1628/844 1482/1671/844 +f 1482/1671/845 1518/1628/845 1519/1630/845 1483/1672/845 +f 1483/1672/846 1519/1630/846 1520/1632/846 1484/1673/846 +f 1484/1673/847 1520/1632/847 1521/1634/847 1485/1674/847 +f 1485/1674/846 1521/1634/846 1522/1636/846 1486/1675/846 +f 1486/1675/848 1522/1636/848 1523/1638/848 1487/1676/848 +f 1487/1676/849 1523/1638/849 1524/1640/849 1488/1677/849 +f 1488/1677/850 1524/1640/850 1525/1642/850 1489/1678/850 +f 1489/1678/851 1525/1642/851 1526/1644/851 1490/1679/851 +f 1490/1679/847 1526/1644/847 1527/1646/847 1491/1680/847 +f 1491/1680/851 1527/1646/851 1528/1648/851 1492/1681/851 +f 1492/1681/847 1528/1648/847 1529/1435/847 1493/1432/847 +f 1263/1398/852 1266/1401/852 1506/1649/852 1470/1682/852 +f 1470/1682/853 1506/1649/853 1507/1650/853 1471/1683/853 +f 1471/1683/854 1507/1650/854 1508/1651/854 1472/1684/854 +f 1472/1684/855 1508/1651/855 1509/1652/855 1473/1685/855 +f 1473/1685/854 1509/1652/854 1510/1653/854 1474/1686/854 +f 1474/1686/855 1510/1653/855 1511/1654/855 1475/1687/855 +f 1475/1687/856 1511/1654/856 1512/1655/856 1476/1688/856 +f 1476/1688/857 1512/1655/857 1513/1656/857 1477/1689/857 +f 1477/1689/854 1513/1656/854 1514/1657/854 1478/1690/854 +f 1478/1690/855 1514/1657/855 1515/1658/855 1479/1691/855 +f 1479/1691/854 1515/1658/854 1516/1659/854 1480/1692/854 +f 1480/1692/855 1516/1659/855 1517/1434/855 1481/1431/855 +f 1262/1397/858 1265/1400/858 1494/1660/858 1458/1693/858 +f 1458/1693/859 1494/1660/859 1495/1661/859 1459/1694/859 +f 1459/1694/860 1495/1661/860 1496/1662/860 1460/1695/860 +f 1460/1695/861 1496/1662/861 1497/1663/861 1461/1696/861 +f 1461/1696/860 1497/1663/860 1498/1664/860 1462/1697/860 +f 1462/1697/861 1498/1664/861 1499/1665/861 1463/1698/861 +f 1463/1698/862 1499/1665/862 1500/1666/862 1464/1699/862 +f 1464/1699/863 1500/1666/863 1501/1667/863 1465/1700/863 +f 1465/1700/860 1501/1667/860 1502/1668/860 1466/1701/860 +f 1466/1701/861 1502/1668/861 1503/1669/861 1467/1702/861 +f 1467/1702/860 1503/1669/860 1504/1670/860 1468/1703/860 +f 1468/1703/861 1504/1670/861 1505/1433/861 1469/1430/861 +f 1261/1396/864 1264/1399/864 1482/1671/864 1446/1704/864 +f 1446/1704/865 1482/1671/865 1483/1672/865 1447/1705/865 +f 1447/1705/866 1483/1672/866 1484/1673/866 1448/1706/866 +f 1448/1706/867 1484/1673/867 1485/1674/867 1449/1707/867 +f 1449/1707/866 1485/1674/866 1486/1675/866 1450/1708/866 +f 1450/1708/868 1486/1675/868 1487/1676/868 1451/1709/868 +f 1451/1709/869 1487/1676/869 1488/1677/869 1452/1710/869 +f 1452/1710/870 1488/1677/870 1489/1678/870 1453/1711/870 +f 1453/1711/871 1489/1678/871 1490/1679/871 1454/1712/871 +f 1454/1712/868 1490/1679/868 1491/1680/868 1455/1713/868 +f 1455/1713/871 1491/1680/871 1492/1681/871 1456/1714/871 +f 1456/1714/868 1492/1681/868 1493/1432/868 1457/1429/868 +f 1260/1395/872 1263/1398/872 1470/1682/872 1434/1715/872 +f 1434/1715/873 1470/1682/873 1471/1683/873 1435/1716/873 +f 1435/1716/874 1471/1683/874 1472/1684/874 1436/1717/874 +f 1436/1717/875 1472/1684/875 1473/1685/875 1437/1718/875 +f 1437/1718/874 1473/1685/874 1474/1686/874 1438/1719/874 +f 1438/1719/875 1474/1686/875 1475/1687/875 1439/1720/875 +f 1439/1720/876 1475/1687/876 1476/1688/876 1440/1721/876 +f 1440/1721/877 1476/1688/877 1477/1689/877 1441/1722/877 +f 1441/1722/878 1477/1689/878 1478/1690/878 1442/1723/878 +f 1442/1723/879 1478/1690/879 1479/1691/879 1443/1724/879 +f 1443/1724/874 1479/1691/874 1480/1692/874 1444/1725/874 +f 1444/1725/879 1480/1692/879 1481/1431/879 1445/1428/879 +f 1259/1394/880 1262/1397/880 1458/1693/880 1422/1726/880 +f 1422/1726/881 1458/1693/881 1459/1694/881 1423/1727/881 +f 1423/1727/882 1459/1694/882 1460/1695/882 1424/1728/882 +f 1424/1728/883 1460/1695/883 1461/1696/883 1425/1729/883 +f 1425/1729/882 1461/1696/882 1462/1697/882 1426/1730/882 +f 1426/1730/883 1462/1697/883 1463/1698/883 1427/1731/883 +f 1427/1731/884 1463/1698/884 1464/1699/884 1428/1732/884 +f 1428/1732/885 1464/1699/885 1465/1700/885 1429/1733/885 +f 1429/1733/882 1465/1700/882 1466/1701/882 1430/1734/882 +f 1430/1734/886 1466/1701/886 1467/1702/886 1431/1735/886 +f 1431/1735/882 1467/1702/882 1468/1703/882 1432/1736/882 +f 1432/1736/886 1468/1703/886 1469/1430/886 1433/1427/886 +f 1258/1393/887 1261/1396/887 1446/1704/887 1410/1737/887 +f 1410/1737/888 1446/1704/888 1447/1705/888 1411/1738/888 +f 1411/1738/889 1447/1705/889 1448/1706/889 1412/1739/889 +f 1412/1739/890 1448/1706/890 1449/1707/890 1413/1740/890 +f 1413/1740/889 1449/1707/889 1450/1708/889 1414/1741/889 +f 1414/1741/890 1450/1708/890 1451/1709/890 1415/1742/890 +f 1415/1742/891 1451/1709/891 1452/1710/891 1416/1743/891 +f 1416/1743/892 1452/1710/892 1453/1711/892 1417/1744/892 +f 1417/1744/893 1453/1711/893 1454/1712/893 1418/1745/893 +f 1418/1745/890 1454/1712/890 1455/1713/890 1419/1746/890 +f 1419/1746/889 1455/1713/889 1456/1714/889 1420/1747/889 +f 1420/1747/890 1456/1714/890 1457/1429/890 1421/1426/890 +f 1257/1391/894 1260/1395/894 1434/1715/894 1398/1748/894 +f 1398/1748/895 1434/1715/895 1435/1716/895 1399/1749/895 +f 1399/1749/896 1435/1716/896 1436/1717/896 1400/1750/896 +f 1400/1750/897 1436/1717/897 1437/1718/897 1401/1751/897 +f 1401/1751/896 1437/1718/896 1438/1719/896 1402/1752/896 +f 1402/1752/898 1438/1719/898 1439/1720/898 1403/1753/898 +f 1403/1753/899 1439/1720/899 1440/1721/899 1404/1754/899 +f 1404/1754/900 1440/1721/900 1441/1722/900 1405/1755/900 +f 1405/1755/901 1441/1722/901 1442/1723/901 1406/1756/901 +f 1406/1756/897 1442/1723/897 1443/1724/897 1407/1757/897 +f 1407/1757/901 1443/1724/901 1444/1725/901 1408/1758/901 +f 1408/1758/897 1444/1725/897 1445/1428/897 1409/1425/897 +f 1256/1390/902 1259/1394/902 1422/1726/902 1386/1759/902 +f 1386/1759/903 1422/1726/903 1423/1727/903 1387/1760/903 +f 1387/1760/904 1423/1727/904 1424/1728/904 1388/1761/904 +f 1388/1761/905 1424/1728/905 1425/1729/905 1389/1762/905 +f 1389/1762/904 1425/1729/904 1426/1730/904 1390/1763/904 +f 1390/1763/905 1426/1730/905 1427/1731/905 1391/1764/905 +f 1391/1764/906 1427/1731/906 1428/1732/906 1392/1765/906 +f 1392/1765/907 1428/1732/907 1429/1733/907 1393/1766/907 +f 1393/1766/908 1429/1733/908 1430/1734/908 1394/1767/908 +f 1394/1767/909 1430/1734/909 1431/1735/909 1395/1768/909 +f 1395/1768/908 1431/1735/908 1432/1736/908 1396/1769/908 +f 1396/1769/909 1432/1736/909 1433/1427/909 1397/1423/909 +f 1255/1389/910 1258/1393/910 1410/1737/910 1374/1770/910 +f 1374/1770/911 1410/1737/911 1411/1738/911 1375/1771/911 +f 1375/1771/912 1411/1738/912 1412/1739/912 1376/1772/912 +f 1376/1772/913 1412/1739/913 1413/1740/913 1377/1773/913 +f 1377/1773/912 1413/1740/912 1414/1741/912 1378/1774/912 +f 1378/1774/913 1414/1741/913 1415/1742/913 1379/1775/913 +f 1379/1775/914 1415/1742/914 1416/1743/914 1380/1776/914 +f 1380/1776/915 1416/1743/915 1417/1744/915 1381/1777/915 +f 1381/1777/916 1417/1744/916 1418/1745/916 1382/1778/916 +f 1382/1778/913 1418/1745/913 1419/1746/913 1383/1779/913 +f 1383/1779/912 1419/1746/912 1420/1747/912 1384/1780/912 +f 1384/1780/913 1420/1747/913 1421/1426/913 1385/1422/913 +f 1252/1392/917 1257/1391/917 1398/1748/917 1349/1781/917 +f 1349/1781/918 1398/1748/918 1399/1749/918 1348/1782/918 +f 1348/1782/919 1399/1749/919 1400/1750/919 1347/1783/919 +f 1347/1783/920 1400/1750/920 1401/1751/920 1346/1784/920 +f 1346/1784/921 1401/1751/921 1402/1752/921 1345/1785/921 +f 1345/1785/920 1402/1752/920 1403/1753/920 1344/1786/920 +f 1344/1786/922 1403/1753/922 1404/1754/922 1343/1787/922 +f 1343/1787/923 1404/1754/923 1405/1755/923 1342/1788/923 +f 1342/1788/919 1405/1755/919 1406/1756/919 1341/1789/919 +f 1341/1789/920 1406/1756/920 1407/1757/920 1340/1790/920 +f 1340/1790/919 1407/1757/919 1408/1758/919 1339/1791/919 +f 1339/1791/924 1408/1758/924 1409/1425/924 1338/1424/924 +f 1254/1387/925 1256/1390/925 1386/1759/925 1362/1792/925 +f 1362/1792/926 1386/1759/926 1387/1760/926 1363/1793/926 +f 1363/1793/927 1387/1760/927 1388/1761/927 1364/1794/927 +f 1364/1794/928 1388/1761/928 1389/1762/928 1365/1795/928 +f 1365/1795/929 1389/1762/929 1390/1763/929 1366/1796/929 +f 1366/1796/928 1390/1763/928 1391/1764/928 1367/1797/928 +f 1367/1797/930 1391/1764/930 1392/1765/930 1368/1798/930 +f 1368/1798/931 1392/1765/931 1393/1766/931 1369/1799/931 +f 1369/1799/929 1393/1766/929 1394/1767/929 1370/1800/929 +f 1370/1800/928 1394/1767/928 1395/1768/928 1371/1801/928 +f 1371/1801/929 1395/1768/929 1396/1769/929 1372/1802/929 +f 1372/1802/932 1396/1769/932 1397/1423/932 1373/1421/932 +f 1253/1385/933 1255/1389/933 1374/1770/933 1350/1803/933 +f 1350/1803/934 1374/1770/934 1375/1771/934 1351/1804/934 +f 1351/1804/935 1375/1771/935 1376/1772/935 1352/1805/935 +f 1352/1805/936 1376/1772/936 1377/1773/936 1353/1806/936 +f 1353/1806/935 1377/1773/935 1378/1774/935 1354/1807/935 +f 1354/1807/936 1378/1774/936 1379/1775/936 1355/1808/936 +f 1355/1808/937 1379/1775/937 1380/1776/937 1356/1809/937 +f 1356/1809/938 1380/1776/938 1381/1777/938 1357/1810/938 +f 1357/1810/935 1381/1777/935 1382/1778/935 1358/1811/935 +f 1358/1811/939 1382/1778/939 1383/1779/939 1359/1812/939 +f 1359/1812/935 1383/1779/935 1384/1780/935 1360/1813/935 +f 1360/1813/939 1384/1780/939 1385/1422/939 1361/1419/939 +f 1251/1388/940 1254/1387/940 1362/1792/940 1337/1451/940 +f 1337/1451/941 1362/1792/941 1363/1793/941 1336/1453/941 +f 1336/1453/942 1363/1793/942 1364/1794/942 1335/1455/942 +f 1335/1455/943 1364/1794/943 1365/1795/943 1334/1457/943 +f 1334/1457/942 1365/1795/942 1366/1796/942 1333/1459/942 +f 1333/1459/943 1366/1796/943 1367/1797/943 1332/1461/943 +f 1332/1461/944 1367/1797/944 1368/1798/944 1331/1463/944 +f 1331/1463/945 1368/1798/945 1369/1799/945 1330/1465/945 +f 1330/1465/942 1369/1799/942 1370/1800/942 1329/1467/942 +f 1329/1467/943 1370/1800/943 1371/1801/943 1328/1469/943 +f 1328/1469/942 1371/1801/942 1372/1802/942 1327/1471/942 +f 1327/1471/943 1372/1802/943 1373/1421/943 1326/1420/943 +f 1250/1386/946 1253/1385/946 1350/1803/946 1325/1473/946 +f 1325/1473/947 1350/1803/947 1351/1804/947 1324/1475/947 +f 1324/1475/948 1351/1804/948 1352/1805/948 1323/1477/948 +f 1323/1477/949 1352/1805/949 1353/1806/949 1322/1479/949 +f 1322/1479/948 1353/1806/948 1354/1807/948 1321/1481/948 +f 1321/1481/950 1354/1807/950 1355/1808/950 1320/1483/950 +f 1320/1483/951 1355/1808/951 1356/1809/951 1319/1485/951 +f 1319/1485/952 1356/1809/952 1357/1810/952 1318/1487/952 +f 1318/1487/948 1357/1810/948 1358/1811/948 1317/1489/948 +f 1317/1489/950 1358/1811/950 1359/1812/950 1316/1491/950 +f 1316/1491/948 1359/1812/948 1360/1813/948 1315/1493/948 +f 1315/1493/953 1360/1813/953 1361/1419/953 1314/1418/953 +f 173/418/12 175/463/12 3/815/12 2/819/12 +f 175/463/15 177/493/15 4/811/15 3/815/15 +f 177/493/18 179/523/18 5/807/18 4/811/18 +f 179/523/20 181/553/20 6/801/20 5/807/20 +f 181/553/22 182/583/22 7/799/22 6/801/22 +f 182/583/23 183/598/23 8/797/23 7/799/23 +f 183/598/24 184/613/24 9/795/24 8/797/24 +f 184/613/25 185/628/25 10/793/25 9/795/25 +f 185/628/26 186/643/26 11/791/26 10/793/26 +f 186/643/27 187/658/27 12/789/27 11/791/27 +f 187/658/28 188/673/28 13/787/28 12/789/28 +f 188/673/29 189/688/29 14/785/29 13/787/29 +f 189/688/30 190/703/30 15/783/30 14/785/30 +f 190/703/31 191/718/31 16/781/31 15/783/31 +f 191/718/32 192/733/32 17/779/32 16/781/32 +f 192/733/33 193/748/33 18/777/33 17/779/33 +f 193/748/34 162/269/34 19/775/34 18/777/34 +f 162/269/2 163/268/2 20/773/2 19/775/2 +f 163/268/5 164/298/5 21/771/5 20/773/5 +f 164/298/7 165/313/7 22/769/7 21/771/7 +f 165/313/10 166/328/10 23/767/10 22/769/10 +f 166/328/13 167/343/13 24/763/13 23/767/13 +f 167/343/16 168/358/16 25/764/16 24/763/16 +f 168/358/1 169/373/1 26/827/1 25/764/1 +f 169/373/6 170/388/6 27/825/6 26/827/6 +f 170/388/8 171/403/8 28/821/8 27/825/8 +f 171/403/11 174/448/11 29/817/11 28/821/11 +f 174/448/14 176/478/14 30/813/14 29/817/14 +f 176/478/17 178/508/17 31/809/17 30/813/17 +f 178/508/19 180/538/19 32/803/19 31/809/19 +f 180/538/21 172/568/21 1/804/21 32/803/21 +f 172/419/9 173/418/9 2/819/9 1/823/9 +f 1698/1814/954 1699/1815/954 1701/1816/954 1700/1817/954 +f 1700/1817/955 1701/1816/955 1703/1818/955 1702/1819/955 +f 1702/1819/956 1703/1818/956 1705/1820/956 1704/1821/956 +f 1704/1821/957 1705/1820/957 1707/1822/957 1706/1823/957 +f 1706/1823/958 1707/1822/958 1709/1824/958 1708/1825/958 +f 1708/1825/959 1709/1824/959 1711/1826/959 1710/1827/959 +f 1710/1827/960 1711/1826/960 1713/1828/960 1712/1829/960 +f 1712/1829/961 1713/1828/961 1715/1830/961 1714/1831/961 +f 1714/1831/962 1715/1830/962 1717/1832/962 1716/1833/962 +f 1716/1833/963 1717/1832/963 1719/1834/963 1718/1835/963 +f 1718/1835/964 1719/1834/964 1721/1836/964 1720/1837/964 +f 1720/1837/965 1721/1836/965 1723/1838/965 1722/1839/965 +f 1722/1839/966 1723/1838/966 1725/1840/966 1724/1841/966 +f 1724/1841/967 1725/1840/967 1727/1842/967 1726/1843/967 +f 1726/1843/968 1727/1842/968 1729/1844/968 1728/1845/968 +f 1728/1845/969 1729/1844/969 1731/1846/969 1730/1847/969 +f 1730/1847/970 1731/1846/970 1733/1848/970 1732/1849/970 +f 1732/1849/971 1733/1848/971 1735/1850/971 1734/1851/971 +f 1734/1851/972 1735/1850/972 1737/1852/972 1736/1853/972 +f 1736/1853/973 1737/1852/973 1739/1854/973 1738/1855/973 +f 1738/1855/974 1739/1854/974 1741/1856/974 1740/1857/974 +f 1740/1857/975 1741/1856/975 1743/1858/975 1742/1859/975 +f 1742/1859/976 1743/1858/976 1745/1860/976 1744/1861/976 +f 1744/1861/977 1745/1860/977 1747/1862/977 1746/1863/977 +f 1746/1863/978 1747/1862/978 1749/1864/978 1748/1865/978 +f 1748/1865/979 1749/1864/979 1751/1866/979 1750/1867/979 +f 1750/1867/980 1751/1866/980 1753/1868/980 1752/1869/980 +f 1752/1869/981 1753/1868/981 1755/1870/981 1754/1871/981 +f 1754/1871/982 1755/1870/982 1757/1872/982 1756/1873/982 +f 1756/1873/983 1757/1872/983 1759/1874/983 1758/1875/983 +f 1719/1834/984 1717/1832/984 1771/1876/984 1772/1877/984 +f 1758/1875/985 1759/1874/985 1761/1878/985 1760/1879/985 +f 1760/1879/986 1761/1878/986 1699/1880/986 1698/1881/986 +f 1708/1825/566 1710/1827/566 1832/1882/566 1831/1883/566 +f 1776/1884/987 1775/1885/987 1794/1886/987 +f 1737/1852/988 1735/1850/988 1780/1887/988 1781/1888/988 +f 1755/1870/989 1753/1868/989 1789/1889/989 1790/1890/989 +f 1711/1826/990 1709/1824/990 1767/1891/990 1768/1892/990 +f 1729/1844/991 1727/1842/991 1776/1884/991 1777/1893/991 +f 1747/1862/992 1745/1860/992 1785/1894/992 1786/1895/992 +f 1703/1818/993 1701/1816/993 1762/1896/993 1764/1897/993 +f 1721/1836/994 1719/1834/994 1772/1877/994 1773/1898/994 +f 1739/1854/995 1737/1852/995 1781/1888/995 1782/1899/995 +f 1757/1872/996 1755/1870/996 1790/1890/996 1791/1900/996 +f 1713/1828/997 1711/1826/997 1768/1892/997 1769/1901/997 +f 1731/1846/998 1729/1844/998 1777/1893/998 1778/1902/998 +f 1749/1864/999 1747/1862/999 1786/1895/999 1787/1903/999 +f 1705/1820/1000 1703/1818/1000 1764/1897/1000 1765/1904/1000 +f 1723/1838/1001 1721/1836/1001 1773/1898/1001 1774/1905/1001 +f 1741/1856/1002 1739/1854/1002 1782/1899/1002 1783/1906/1002 +f 1759/1874/1003 1757/1872/1003 1791/1900/1003 1792/1907/1003 +f 1715/1830/1004 1713/1828/1004 1769/1901/1004 1770/1908/1004 +f 1733/1848/1005 1731/1846/1005 1778/1902/1005 1779/1909/1005 +f 1751/1866/1006 1749/1864/1006 1787/1903/1006 1788/1910/1006 +f 1707/1822/1007 1705/1820/1007 1765/1904/1007 1766/1911/1007 +f 1725/1840/1008 1723/1838/1008 1774/1905/1008 1775/1885/1008 +f 1743/1858/1009 1741/1856/1009 1783/1906/1009 1784/1912/1009 +f 1761/1878/1010 1759/1874/1010 1792/1907/1010 1793/1913/1010 +f 1717/1832/1011 1715/1830/1011 1770/1908/1011 1771/1876/1011 +f 1735/1850/1012 1733/1848/1012 1779/1909/1012 1780/1887/1012 +f 1753/1868/1013 1751/1866/1013 1788/1910/1013 1789/1889/1013 +f 1709/1824/1014 1707/1822/1014 1766/1911/1014 1767/1891/1014 +f 1727/1842/1015 1725/1840/1015 1775/1885/1015 1776/1884/1015 +f 1745/1860/1016 1743/1858/1016 1784/1912/1016 1785/1894/1016 +f 1701/1816/1017 1699/1815/1017 1763/1914/1017 1762/1896/1017 +f 1699/1880/1018 1761/1878/1018 1793/1913/1018 1763/1915/1018 +f 1948/1916/1019 1950/1917/1019 1795/1918/1019 1796/1919/1019 +f 1762/1896/1020 1763/1914/1020 1794/1920/1020 +f 1790/1890/1021 1789/1889/1021 1794/1921/1021 +f 1777/1893/1022 1776/1884/1022 1794/1922/1022 +f 1764/1897/1023 1762/1896/1023 1794/1923/1023 +f 1791/1900/1024 1790/1890/1024 1794/1924/1024 +f 1778/1902/1025 1777/1893/1025 1794/1925/1025 +f 1765/1904/1026 1764/1897/1026 1794/1926/1026 +f 1792/1907/1027 1791/1900/1027 1794/1927/1027 +f 1779/1909/1028 1778/1902/1028 1794/1928/1028 +f 1766/1911/1029 1765/1904/1029 1794/1929/1029 +f 1793/1913/1030 1792/1907/1030 1794/1930/1030 +f 1780/1887/1031 1779/1909/1031 1794/1931/1031 +f 1767/1891/1032 1766/1911/1032 1794/1932/1032 +f 1763/1915/1033 1793/1913/1033 1794/1933/1033 +f 1781/1888/1034 1780/1887/1034 1794/1934/1034 +f 1768/1892/1035 1767/1891/1035 1794/1935/1035 +f 1782/1899/1036 1781/1888/1036 1794/1936/1036 +f 1769/1901/1037 1768/1892/1037 1794/1937/1037 +f 1783/1906/1038 1782/1899/1038 1794/1938/1038 +f 1770/1908/1039 1769/1901/1039 1794/1939/1039 +f 1784/1912/1040 1783/1906/1040 1794/1940/1040 +f 1771/1876/1041 1770/1908/1041 1794/1941/1041 +f 1785/1894/1042 1784/1912/1042 1794/1942/1042 +f 1772/1877/1043 1771/1876/1043 1794/1943/1043 +f 1786/1895/1044 1785/1894/1044 1794/1944/1044 +f 1773/1898/1045 1772/1877/1045 1794/1945/1045 +f 1787/1903/1046 1786/1895/1046 1794/1946/1046 +f 1774/1905/1047 1773/1898/1047 1794/1947/1047 +f 1788/1910/1048 1787/1903/1048 1794/1948/1048 +f 1775/1885/1049 1774/1905/1049 1794/1949/1049 +f 1789/1889/1050 1788/1910/1050 1794/1950/1050 +f 1890/1951/1051 1893/1952/1051 1857/1953/1051 1826/1954/1051 +f 1726/1843/566 1728/1845/566 1841/1955/566 1840/1956/566 +f 1744/1861/566 1746/1863/566 1850/1957/566 1849/1958/566 +f 1700/1817/566 1702/1819/566 1828/1959/566 1827/1960/566 +f 1718/1835/566 1720/1837/566 1837/1961/566 1836/1962/566 +f 1736/1853/566 1738/1855/566 1846/1963/566 1845/1964/566 +f 1754/1871/566 1756/1873/566 1855/1965/566 1854/1966/566 +f 1710/1827/566 1712/1829/566 1833/1967/566 1832/1882/566 +f 1728/1845/566 1730/1847/566 1842/1968/566 1841/1955/566 +f 1746/1863/566 1748/1865/566 1851/1969/566 1850/1957/566 +f 1702/1819/566 1704/1821/566 1829/1970/566 1828/1959/566 +f 1720/1837/566 1722/1839/566 1838/1971/566 1837/1961/566 +f 1738/1855/566 1740/1857/566 1847/1972/566 1846/1963/566 +f 1756/1873/566 1758/1875/566 1856/1973/566 1855/1965/566 +f 1712/1829/566 1714/1831/566 1834/1974/566 1833/1967/566 +f 1730/1847/566 1732/1849/566 1843/1975/566 1842/1968/566 +f 1748/1865/566 1750/1867/566 1852/1976/566 1851/1969/566 +f 1704/1821/566 1706/1823/566 1830/1977/566 1829/1970/566 +f 1722/1839/566 1724/1841/566 1839/1978/566 1838/1971/566 +f 1740/1857/566 1742/1859/566 1848/1979/566 1847/1972/566 +f 1758/1875/566 1760/1879/566 1857/1953/566 1856/1973/566 +f 1714/1831/566 1716/1833/566 1835/1980/566 1834/1974/566 +f 1732/1849/566 1734/1851/566 1844/1981/566 1843/1975/566 +f 1750/1867/566 1752/1869/566 1853/1982/566 1852/1976/566 +f 1706/1823/566 1708/1825/566 1831/1883/566 1830/1977/566 +f 1724/1841/566 1726/1843/566 1840/1956/566 1839/1978/566 +f 1742/1859/566 1744/1861/566 1849/1958/566 1848/1979/566 +f 1698/1814/566 1700/1817/566 1827/1960/566 1826/1983/566 +f 1760/1879/566 1698/1881/566 1826/1954/566 1857/1953/566 +f 1716/1833/566 1718/1835/566 1836/1962/566 1835/1980/566 +f 1734/1851/566 1736/1853/566 1845/1964/566 1844/1981/566 +f 1752/1869/566 1754/1871/566 1854/1966/566 1853/1982/566 +f 1858/1984/566 1859/1985/566 1860/1986/566 1861/1987/566 1862/1988/566 1863/1989/566 1864/1990/566 1865/1991/566 1866/1992/566 1867/1993/566 1868/1994/566 1869/1995/566 1870/1996/566 1871/1997/566 1872/1998/566 1873/1999/566 1874/2000/566 1875/2001/566 1876/2002/566 1877/2003/566 1878/2004/566 1879/2005/566 1880/2006/566 1881/2007/566 1882/2008/566 1883/2009/566 1884/2010/566 1885/2011/566 1886/2012/566 1887/2013/566 1888/2014/566 1889/2015/566 +f 1893/1952/1052 1895/2016/1052 1856/1973/1052 1857/1953/1052 +f 1895/2016/1053 1897/2017/1053 1855/1965/1053 1856/1973/1053 +f 1897/2017/1054 1899/2018/1054 1854/1966/1054 1855/1965/1054 +f 1899/2018/1055 1901/2019/1055 1853/1982/1055 1854/1966/1055 +f 1901/2019/1056 1903/2020/1056 1852/1976/1056 1853/1982/1056 +f 1903/2020/1057 1905/2021/1057 1851/1969/1057 1852/1976/1057 +f 1905/2021/1058 1907/2022/1058 1850/1957/1058 1851/1969/1058 +f 1907/2022/1059 1909/2023/1059 1849/1958/1059 1850/1957/1059 +f 1909/2023/1060 1911/2024/1060 1848/1979/1060 1849/1958/1060 +f 1911/2024/1061 1913/2025/1061 1847/1972/1061 1848/1979/1061 +f 1913/2025/1062 1915/2026/1062 1846/1963/1062 1847/1972/1062 +f 1915/2026/1063 1917/2027/1063 1845/1964/1063 1846/1963/1063 +f 1917/2027/1064 1919/2028/1064 1844/1981/1064 1845/1964/1064 +f 1919/2028/1065 1921/2029/1065 1843/1975/1065 1844/1981/1065 +f 1921/2029/1066 1923/2030/1066 1842/1968/1066 1843/1975/1066 +f 1923/2030/1067 1925/2031/1067 1841/1955/1067 1842/1968/1067 +f 1925/2031/1068 1927/2032/1068 1840/1956/1068 1841/1955/1068 +f 1927/2032/1069 1929/2033/1069 1839/1978/1069 1840/1956/1069 +f 1929/2033/1070 1931/2034/1070 1838/1971/1070 1839/1978/1070 +f 1931/2034/1071 1933/2035/1071 1837/1961/1071 1838/1971/1071 +f 1933/2035/1072 1935/2036/1072 1836/1962/1072 1837/1961/1072 +f 1935/2036/1073 1937/2037/1073 1835/1980/1073 1836/1962/1073 +f 1937/2037/1074 1939/2038/1074 1834/1974/1074 1835/1980/1074 +f 1939/2038/1075 1941/2039/1075 1833/1967/1075 1834/1974/1075 +f 1941/2039/1076 1943/2040/1076 1832/1882/1076 1833/1967/1076 +f 1943/2040/1077 1945/2041/1077 1831/1883/1077 1832/1882/1077 +f 1945/2041/1078 1947/2042/1078 1830/1977/1078 1831/1883/1078 +f 1947/2042/1079 1949/2043/1079 1829/1970/1079 1830/1977/1079 +f 1949/2043/1080 1951/2044/1080 1828/1959/1080 1829/1970/1080 +f 1951/2044/1081 1953/2045/1081 1827/1960/1081 1828/1959/1081 +f 1953/2045/1082 1890/2046/1082 1826/1983/1082 1827/1960/1082 +f 1986/2047/1083 1955/2048/1083 1891/2049/1083 1952/2050/1083 +f 1954/2051/1084 1825/2052/1084 1890/2046/1084 1953/2045/1084 +f 1985/2053/1085 1986/2047/1085 1952/2050/1085 1950/1917/1085 +f 1795/1918/1086 1954/2051/1086 1953/2045/1086 1951/2044/1086 +f 1984/2054/1087 1985/2053/1087 1950/1917/1087 1948/1916/1087 +f 1796/1919/1088 1795/1918/1088 1951/2044/1088 1949/2043/1088 +f 1983/2055/1089 1984/2054/1089 1948/1916/1089 1946/2056/1089 +f 1797/2057/1090 1796/1919/1090 1949/2043/1090 1947/2042/1090 +f 1982/2058/1091 1983/2055/1091 1946/2056/1091 1944/2059/1091 +f 1798/2060/1092 1797/2057/1092 1947/2042/1092 1945/2041/1092 +f 1981/2061/1093 1982/2058/1093 1944/2059/1093 1942/2062/1093 +f 1799/2063/1094 1798/2060/1094 1945/2041/1094 1943/2040/1094 +f 1980/2064/1095 1981/2061/1095 1942/2062/1095 1940/2065/1095 +f 1800/2066/1096 1799/2063/1096 1943/2040/1096 1941/2039/1096 +f 1979/2067/1097 1980/2064/1097 1940/2065/1097 1938/2068/1097 +f 1801/2069/1098 1800/2066/1098 1941/2039/1098 1939/2038/1098 +f 1978/2070/1099 1979/2067/1099 1938/2068/1099 1936/2071/1099 +f 1802/2072/1100 1801/2069/1100 1939/2038/1100 1937/2037/1100 +f 1977/2073/1101 1978/2070/1101 1936/2071/1101 1934/2074/1101 +f 1803/2075/1102 1802/2072/1102 1937/2037/1102 1935/2036/1102 +f 1976/2076/1103 1977/2073/1103 1934/2074/1103 1932/2077/1103 +f 1804/2078/1104 1803/2075/1104 1935/2036/1104 1933/2035/1104 +f 1975/2079/1105 1976/2076/1105 1932/2077/1105 1930/2080/1105 +f 1805/2081/1106 1804/2078/1106 1933/2035/1106 1931/2034/1106 +f 1974/2082/1107 1975/2079/1107 1930/2080/1107 1928/2083/1107 +f 1806/2084/1108 1805/2081/1108 1931/2034/1108 1929/2033/1108 +f 1973/2085/1109 1974/2082/1109 1928/2083/1109 1926/2086/1109 +f 1807/2087/1110 1806/2084/1110 1929/2033/1110 1927/2032/1110 +f 1972/2088/1111 1973/2085/1111 1926/2086/1111 1924/2089/1111 +f 1808/2090/1112 1807/2087/1112 1927/2032/1112 1925/2031/1112 +f 1971/2091/1113 1972/2088/1113 1924/2089/1113 1922/2092/1113 +f 1809/2093/1114 1808/2090/1114 1925/2031/1114 1923/2030/1114 +f 1970/2094/1115 1971/2091/1115 1922/2092/1115 1920/2095/1115 +f 1810/2096/1116 1809/2093/1116 1923/2030/1116 1921/2029/1116 +f 1969/2097/1117 1970/2094/1117 1920/2095/1117 1918/2098/1117 +f 1811/2099/1118 1810/2096/1118 1921/2029/1118 1919/2028/1118 +f 1968/2100/1119 1969/2097/1119 1918/2098/1119 1916/2101/1119 +f 1812/2102/1120 1811/2099/1120 1919/2028/1120 1917/2027/1120 +f 1967/2103/1121 1968/2100/1121 1916/2101/1121 1914/2104/1121 +f 1813/2105/1122 1812/2102/1122 1917/2027/1122 1915/2026/1122 +f 1966/2106/1123 1967/2103/1123 1914/2104/1123 1912/2107/1123 +f 1814/2108/1124 1813/2105/1124 1915/2026/1124 1913/2025/1124 +f 1965/2109/1125 1966/2106/1125 1912/2107/1125 1910/2110/1125 +f 1815/2111/1126 1814/2108/1126 1913/2025/1126 1911/2024/1126 +f 1964/2112/1127 1965/2109/1127 1910/2110/1127 1908/2113/1127 +f 1816/2114/1128 1815/2111/1128 1911/2024/1128 1909/2023/1128 +f 1963/2115/1129 1964/2112/1129 1908/2113/1129 1906/2116/1129 +f 1817/2117/1130 1816/2114/1130 1909/2023/1130 1907/2022/1130 +f 1962/2118/1131 1963/2115/1131 1906/2116/1131 1904/2119/1131 +f 1818/2120/1132 1817/2117/1132 1907/2022/1132 1905/2021/1132 +f 1961/2121/1133 1962/2118/1133 1904/2119/1133 1902/2122/1133 +f 1819/2123/1134 1818/2120/1134 1905/2021/1134 1903/2020/1134 +f 1960/2124/1135 1961/2121/1135 1902/2122/1135 1900/2125/1135 +f 1820/2126/1136 1819/2123/1136 1903/2020/1136 1901/2019/1136 +f 1959/2127/1137 1960/2124/1137 1900/2125/1137 1898/2128/1137 +f 1821/2129/1138 1820/2126/1138 1901/2019/1138 1899/2018/1138 +f 1958/2130/1139 1959/2127/1139 1898/2128/1139 1896/2131/1139 +f 1822/2132/1140 1821/2129/1140 1899/2018/1140 1897/2017/1140 +f 1957/2133/1141 1958/2130/1141 1896/2131/1141 1894/2134/1141 +f 1823/2135/1142 1822/2132/1142 1897/2017/1142 1895/2016/1142 +f 1956/2136/1143 1957/2133/1143 1894/2134/1143 1892/2137/1143 +f 1824/2138/1144 1823/2135/1144 1895/2016/1144 1893/1952/1144 +f 1955/2139/1145 1956/2136/1145 1892/2137/1145 1891/2140/1145 +f 1825/2141/1146 1824/2138/1146 1893/1952/1146 1890/1951/1146 +f 1946/2056/1147 1948/1916/1147 1796/1919/1147 1797/2057/1147 +f 1944/2059/1148 1946/2056/1148 1797/2057/1148 1798/2060/1148 +f 1942/2062/1149 1944/2059/1149 1798/2060/1149 1799/2063/1149 +f 1940/2065/1150 1942/2062/1150 1799/2063/1150 1800/2066/1150 +f 1938/2068/1151 1940/2065/1151 1800/2066/1151 1801/2069/1151 +f 1936/2071/1152 1938/2068/1152 1801/2069/1152 1802/2072/1152 +f 1934/2074/1153 1936/2071/1153 1802/2072/1153 1803/2075/1153 +f 1932/2077/1154 1934/2074/1154 1803/2075/1154 1804/2078/1154 +f 1930/2080/1155 1932/2077/1155 1804/2078/1155 1805/2081/1155 +f 1928/2083/1156 1930/2080/1156 1805/2081/1156 1806/2084/1156 +f 1926/2086/1157 1928/2083/1157 1806/2084/1157 1807/2087/1157 +f 1924/2089/1158 1926/2086/1158 1807/2087/1158 1808/2090/1158 +f 1922/2092/1159 1924/2089/1159 1808/2090/1159 1809/2093/1159 +f 1920/2095/1160 1922/2092/1160 1809/2093/1160 1810/2096/1160 +f 1918/2098/1161 1920/2095/1161 1810/2096/1161 1811/2099/1161 +f 1916/2101/1162 1918/2098/1162 1811/2099/1162 1812/2102/1162 +f 1914/2104/1163 1916/2101/1163 1812/2102/1163 1813/2105/1163 +f 1912/2107/1164 1914/2104/1164 1813/2105/1164 1814/2108/1164 +f 1910/2110/1165 1912/2107/1165 1814/2108/1165 1815/2111/1165 +f 1908/2113/1166 1910/2110/1166 1815/2111/1166 1816/2114/1166 +f 1906/2116/1167 1908/2113/1167 1816/2114/1167 1817/2117/1167 +f 1904/2119/1168 1906/2116/1168 1817/2117/1168 1818/2120/1168 +f 1902/2122/1169 1904/2119/1169 1818/2120/1169 1819/2123/1169 +f 1900/2125/1170 1902/2122/1170 1819/2123/1170 1820/2126/1170 +f 1898/2128/1171 1900/2125/1171 1820/2126/1171 1821/2129/1171 +f 1896/2131/1172 1898/2128/1172 1821/2129/1172 1822/2132/1172 +f 1894/2134/1173 1896/2131/1173 1822/2132/1173 1823/2135/1173 +f 1892/2137/1174 1894/2134/1174 1823/2135/1174 1824/2138/1174 +f 1891/2140/1175 1892/2137/1175 1824/2138/1175 1825/2141/1175 +f 1950/1917/1176 1952/2050/1176 1954/2051/1176 1795/1918/1176 +f 1952/2050/1177 1891/2049/1177 1825/2052/1177 1954/2051/1177 +f 1858/1984/1178 1889/2015/1178 1956/2136/1178 1955/2139/1178 +f 1889/2015/1179 1888/2014/1179 1957/2133/1179 1956/2136/1179 +f 1888/2014/1180 1887/2013/1180 1958/2130/1180 1957/2133/1180 +f 1887/2013/1181 1886/2012/1181 1959/2127/1181 1958/2130/1181 +f 1886/2012/1182 1885/2011/1182 1960/2124/1182 1959/2127/1182 +f 1885/2011/1183 1884/2010/1183 1961/2121/1183 1960/2124/1183 +f 1884/2010/1184 1883/2009/1184 1962/2118/1184 1961/2121/1184 +f 1883/2009/1185 1882/2008/1185 1963/2115/1185 1962/2118/1185 +f 1882/2008/1186 1881/2007/1186 1964/2112/1186 1963/2115/1186 +f 1881/2007/1187 1880/2006/1187 1965/2109/1187 1964/2112/1187 +f 1880/2006/1188 1879/2005/1188 1966/2106/1188 1965/2109/1188 +f 1879/2005/1189 1878/2004/1189 1967/2103/1189 1966/2106/1189 +f 1878/2004/1190 1877/2003/1190 1968/2100/1190 1967/2103/1190 +f 1877/2003/1191 1876/2002/1191 1969/2097/1191 1968/2100/1191 +f 1876/2002/1192 1875/2001/1192 1970/2094/1192 1969/2097/1192 +f 1875/2001/1193 1874/2000/1193 1971/2091/1193 1970/2094/1193 +f 1874/2000/1194 1873/1999/1194 1972/2088/1194 1971/2091/1194 +f 1873/1999/1195 1872/1998/1195 1973/2085/1195 1972/2088/1195 +f 1872/1998/1196 1871/1997/1196 1974/2082/1196 1973/2085/1196 +f 1871/1997/1197 1870/1996/1197 1975/2079/1197 1974/2082/1197 +f 1870/1996/1198 1869/1995/1198 1976/2076/1198 1975/2079/1198 +f 1869/1995/1199 1868/1994/1199 1977/2073/1199 1976/2076/1199 +f 1868/1994/1200 1867/1993/1200 1978/2070/1200 1977/2073/1200 +f 1867/1993/1201 1866/1992/1201 1979/2067/1201 1978/2070/1201 +f 1866/1992/1202 1865/1991/1202 1980/2064/1202 1979/2067/1202 +f 1865/1991/1203 1864/1990/1203 1981/2061/1203 1980/2064/1203 +f 1864/1990/1204 1863/1989/1204 1982/2058/1204 1981/2061/1204 +f 1863/1989/1205 1862/1988/1205 1983/2055/1205 1982/2058/1205 +f 1862/1988/1206 1861/1987/1206 1984/2054/1206 1983/2055/1206 +f 1861/1987/1207 1860/1986/1207 1985/2053/1207 1984/2054/1207 +f 1860/1986/1208 1859/1985/1208 1986/2047/1208 1985/2053/1208 +f 1859/1985/1209 1858/1984/1209 1955/2048/1209 1986/2047/1209 +f 1987/2142/1210 1989/2143/1210 1990/2144/1210 1988/2145/1210 +f 1989/2143/1211 1991/2146/1211 1992/2147/1211 1990/2144/1211 +f 1991/2146/1212 1993/2148/1212 1994/2149/1212 1992/2147/1212 +f 1993/2148/1213 1995/2150/1213 1996/2151/1213 1994/2149/1213 +f 1995/2150/1214 1997/2152/1214 1998/2153/1214 1996/2151/1214 +f 1997/2152/1215 1999/2154/1215 2000/2155/1215 1998/2153/1215 +f 1999/2154/1216 2001/2156/1216 2002/2157/1216 2000/2155/1216 +f 2001/2156/1217 2003/2158/1217 2004/2159/1217 2002/2157/1217 +f 2003/2158/1218 2005/2160/1218 2006/2161/1218 2004/2159/1218 +f 2005/2160/1219 2007/2162/1219 2008/2163/1219 2006/2161/1219 +f 2007/2162/1220 2009/2164/1220 2010/2165/1220 2008/2163/1220 +f 2009/2164/1221 2011/2166/1221 2012/2167/1221 2010/2165/1221 +f 2011/2166/1222 2013/2168/1222 2014/2169/1222 2012/2167/1222 +f 2013/2168/1223 2015/2170/1223 2016/2171/1223 2014/2169/1223 +f 2015/2170/1224 2017/2172/1224 2018/2173/1224 2016/2171/1224 +f 2017/2172/1225 2019/2174/1225 2020/2175/1225 2018/2173/1225 +f 2019/2174/1226 2021/2176/1226 2022/2177/1226 2020/2175/1226 +f 2021/2176/1227 2023/2178/1227 2024/2179/1227 2022/2177/1227 +f 2023/2178/1228 2025/2180/1228 2026/2181/1228 2024/2179/1228 +f 2025/2180/1229 2027/2182/1229 2028/2183/1229 2026/2181/1229 +f 2027/2182/1230 2029/2184/1230 2030/2185/1230 2028/2183/1230 +f 2029/2184/1231 2031/2186/1231 2032/2187/1231 2030/2185/1231 +f 2031/2186/1232 2033/2188/1232 2034/2189/1232 2032/2187/1232 +f 2033/2188/1233 2035/2190/1233 2036/2191/1233 2034/2189/1233 +f 2035/2190/1234 2037/2192/1234 2038/2193/1234 2036/2191/1234 +f 2037/2192/1235 2039/2194/1235 2040/2195/1235 2038/2193/1235 +f 2039/2194/1236 2041/2196/1236 2042/2197/1236 2040/2195/1236 +f 2041/2196/1237 2043/2198/1237 2044/2199/1237 2042/2197/1237 +f 2043/2198/1238 2045/2200/1238 2046/2201/1238 2044/2199/1238 +f 2045/2200/1239 2047/2202/1239 2048/2203/1239 2046/2201/1239 +f 2008/2163/1240 2061/2204/1240 2060/2205/1240 2006/2161/1240 +f 2047/2202/1241 2049/2206/1241 2050/2207/1241 2048/2203/1241 +f 2049/2206/1242 1987/2208/1242 1988/2209/1242 2050/2207/1242 +f 1997/2152/566 2120/2210/566 2121/2211/566 1999/2154/566 +f 2065/2212/1026 2083/2213/1026 2064/2214/1026 +f 2026/2181/1243 2070/2215/1243 2069/2216/1243 2024/2179/1243 +f 2044/2199/1244 2079/2217/1244 2078/2218/1244 2042/2197/1244 +f 2000/2155/1245 2057/2219/1245 2056/2220/1245 1998/2153/1245 +f 2018/2173/1246 2066/2221/1246 2065/2212/1246 2016/2171/1246 +f 2036/2191/1247 2075/2222/1247 2074/2223/1247 2034/2189/1247 +f 1992/2147/1248 2053/2224/1248 2051/2225/1248 1990/2144/1248 +f 2010/2165/1249 2062/2226/1249 2061/2204/1249 2008/2163/1249 +f 2028/2183/1250 2071/2227/1250 2070/2215/1250 2026/2181/1250 +f 2046/2201/1251 2080/2228/1251 2079/2217/1251 2044/2199/1251 +f 2002/2157/1252 2058/2229/1252 2057/2219/1252 2000/2155/1252 +f 2020/2175/1253 2067/2230/1253 2066/2221/1253 2018/2173/1253 +f 2038/2193/1254 2076/2231/1254 2075/2222/1254 2036/2191/1254 +f 1994/2149/1255 2054/2232/1255 2053/2224/1255 1992/2147/1255 +f 2012/2167/1256 2063/2233/1256 2062/2226/1256 2010/2165/1256 +f 2030/2185/1257 2072/2234/1257 2071/2227/1257 2028/2183/1257 +f 2048/2203/1258 2081/2235/1258 2080/2228/1258 2046/2201/1258 +f 2004/2159/1259 2059/2236/1259 2058/2229/1259 2002/2157/1259 +f 2022/2177/1260 2068/2237/1260 2067/2230/1260 2020/2175/1260 +f 2040/2195/1261 2077/2238/1261 2076/2231/1261 2038/2193/1261 +f 1996/2151/1262 2055/2239/1262 2054/2232/1262 1994/2149/1262 +f 2014/2169/1263 2064/2214/1263 2063/2233/1263 2012/2167/1263 +f 2032/2187/1264 2073/2240/1264 2072/2234/1264 2030/2185/1264 +f 2050/2207/1265 2082/2241/1265 2081/2235/1265 2048/2203/1265 +f 2006/2161/1266 2060/2205/1266 2059/2236/1266 2004/2159/1266 +f 2024/2179/1267 2069/2216/1267 2068/2237/1267 2022/2177/1267 +f 2042/2197/1268 2078/2218/1268 2077/2238/1268 2040/2195/1268 +f 1998/2153/1269 2056/2220/1269 2055/2239/1269 1996/2151/1269 +f 2016/2171/1270 2065/2212/1270 2064/2214/1270 2014/2169/1270 +f 2034/2189/1271 2074/2223/1271 2073/2240/1271 2032/2187/1271 +f 1990/2144/1272 2051/2225/1272 2052/2242/1272 1988/2145/1272 +f 1988/2209/1273 2052/2243/1273 2082/2241/1273 2050/2207/1273 +f 2237/2244/1274 2085/2245/1274 2084/2246/1274 2239/2247/1274 +f 2051/2225/1025 2083/2248/1025 2052/2242/1025 +f 2079/2217/1038 2083/2249/1038 2078/2218/1038 +f 2066/2221/1023 2083/2250/1023 2065/2212/1023 +f 2053/2224/1022 2083/2251/1022 2051/2225/1022 +f 2080/2228/1036 2083/2252/1036 2079/2217/1036 +f 2067/2230/1020 2083/2253/1020 2066/2221/1020 +f 2054/2232/1275 2083/2254/1275 2053/2224/1275 +f 2081/2235/1276 2083/2255/1276 2080/2228/1276 +f 2068/2237/1033 2083/2256/1033 2067/2230/1033 +f 2055/2239/1049 2083/2257/1049 2054/2232/1049 +f 2082/2241/1031 2083/2258/1031 2081/2235/1031 +f 2069/2216/1030 2083/2259/1030 2068/2237/1030 +f 2056/2220/1047 2083/2260/1047 2055/2239/1047 +f 2052/2243/1028 2083/2261/1028 2082/2241/1028 +f 2070/2215/1027 2083/2262/1027 2069/2216/1027 +f 2057/2219/1045 2083/2263/1045 2056/2220/1045 +f 2071/2227/1024 2083/2264/1024 2070/2215/1024 +f 2058/2229/1043 2083/2265/1043 2057/2219/1043 +f 2072/2234/1021 2083/2266/1021 2071/2227/1021 +f 2059/2236/1041 2083/2267/1041 2058/2229/1041 +f 2073/2240/1050 2083/2268/1050 2072/2234/1050 +f 2060/2205/1039 2083/2269/1039 2059/2236/1039 +f 2074/2223/1048 2083/2270/1048 2073/2240/1048 +f 2061/2204/1037 2083/2271/1037 2060/2205/1037 +f 2075/2222/1046 2083/2272/1046 2074/2223/1046 +f 2062/2226/1035 2083/2273/1035 2061/2204/1035 +f 2076/2231/1044 2083/2274/1044 2075/2222/1044 +f 2063/2233/1032 2083/2275/1032 2062/2226/1032 +f 2077/2238/1042 2083/2276/1042 2076/2231/1042 +f 2064/2214/1029 2083/2277/1029 2063/2233/1029 +f 2078/2218/1040 2083/2278/1040 2077/2238/1040 +f 2179/2279/1277 2115/2280/1277 2146/2281/1277 2182/2282/1277 +f 2015/2170/566 2129/2283/566 2130/2284/566 2017/2172/566 +f 2033/2188/566 2138/2285/566 2139/2286/566 2035/2190/566 +f 1989/2143/566 2116/2287/566 2117/2288/566 1991/2146/566 +f 2007/2162/566 2125/2289/566 2126/2290/566 2009/2164/566 +f 2025/2180/566 2134/2291/566 2135/2292/566 2027/2182/566 +f 2043/2198/566 2143/2293/566 2144/2294/566 2045/2200/566 +f 1999/2154/566 2121/2211/566 2122/2295/566 2001/2156/566 +f 2017/2172/566 2130/2284/566 2131/2296/566 2019/2174/566 +f 2035/2190/566 2139/2286/566 2140/2297/566 2037/2192/566 +f 1991/2146/566 2117/2288/566 2118/2298/566 1993/2148/566 +f 2009/2164/566 2126/2290/566 2127/2299/566 2011/2166/566 +f 2027/2182/566 2135/2292/566 2136/2300/566 2029/2184/566 +f 2045/2200/566 2144/2294/566 2145/2301/566 2047/2202/566 +f 2001/2156/566 2122/2295/566 2123/2302/566 2003/2158/566 +f 2019/2174/566 2131/2296/566 2132/2303/566 2021/2176/566 +f 2037/2192/566 2140/2297/566 2141/2304/566 2039/2194/566 +f 1993/2148/566 2118/2298/566 2119/2305/566 1995/2150/566 +f 2011/2166/566 2127/2299/566 2128/2306/566 2013/2168/566 +f 2029/2184/566 2136/2300/566 2137/2307/566 2031/2186/566 +f 2047/2202/566 2145/2301/566 2146/2281/566 2049/2206/566 +f 2003/2158/566 2123/2302/566 2124/2308/566 2005/2160/566 +f 2021/2176/566 2132/2303/566 2133/2309/566 2023/2178/566 +f 2039/2194/566 2141/2304/566 2142/2310/566 2041/2196/566 +f 1995/2150/566 2119/2305/566 2120/2210/566 1997/2152/566 +f 2013/2168/566 2128/2306/566 2129/2283/566 2015/2170/566 +f 2031/2186/566 2137/2307/566 2138/2285/566 2033/2188/566 +f 1987/2142/566 2115/2311/566 2116/2287/566 1989/2143/566 +f 2049/2206/566 2146/2281/566 2115/2280/566 1987/2208/566 +f 2005/2160/566 2124/2308/566 2125/2289/566 2007/2162/566 +f 2023/2178/566 2133/2309/566 2134/2291/566 2025/2180/566 +f 2041/2196/566 2142/2310/566 2143/2293/566 2043/2198/566 +f 2147/2312/1278 2178/2313/1278 2177/2314/1278 2176/2315/1278 2175/2316/1278 2174/2317/1278 2173/2318/1278 2172/2319/1278 2171/2320/1278 2170/2321/1278 2169/2322/1278 2168/2323/1278 2167/2324/1278 2166/2325/1278 2165/2326/1278 2164/2327/1278 2163/2328/1278 2162/2329/1278 2161/2330/1278 2160/2331/1278 2159/2332/1278 2158/2333/1278 2157/2334/1278 2156/2335/1278 2155/2336/1278 2154/2337/1278 2153/2338/1278 2152/2339/1278 2151/2340/1278 2150/2341/1278 2149/2342/1278 2148/2343/1278 +f 2182/2282/1279 2146/2281/1279 2145/2301/1279 2184/2344/1279 +f 2184/2344/1280 2145/2301/1280 2144/2294/1280 2186/2345/1280 +f 2186/2345/1281 2144/2294/1281 2143/2293/1281 2188/2346/1281 +f 2188/2346/1282 2143/2293/1282 2142/2310/1282 2190/2347/1282 +f 2190/2347/1283 2142/2310/1283 2141/2304/1283 2192/2348/1283 +f 2192/2348/1284 2141/2304/1284 2140/2297/1284 2194/2349/1284 +f 2194/2349/1285 2140/2297/1285 2139/2286/1285 2196/2350/1285 +f 2196/2350/1286 2139/2286/1286 2138/2285/1286 2198/2351/1286 +f 2198/2351/1287 2138/2285/1287 2137/2307/1287 2200/2352/1287 +f 2200/2352/1288 2137/2307/1288 2136/2300/1288 2202/2353/1288 +f 2202/2353/1289 2136/2300/1289 2135/2292/1289 2204/2354/1289 +f 2204/2354/1290 2135/2292/1290 2134/2291/1290 2206/2355/1290 +f 2206/2355/1291 2134/2291/1291 2133/2309/1291 2208/2356/1291 +f 2208/2356/1292 2133/2309/1292 2132/2303/1292 2210/2357/1292 +f 2210/2357/1293 2132/2303/1293 2131/2296/1293 2212/2358/1293 +f 2212/2358/1294 2131/2296/1294 2130/2284/1294 2214/2359/1294 +f 2214/2359/1295 2130/2284/1295 2129/2283/1295 2216/2360/1295 +f 2216/2360/1296 2129/2283/1296 2128/2306/1296 2218/2361/1296 +f 2218/2361/1297 2128/2306/1297 2127/2299/1297 2220/2362/1297 +f 2220/2362/1298 2127/2299/1298 2126/2290/1298 2222/2363/1298 +f 2222/2363/1299 2126/2290/1299 2125/2289/1299 2224/2364/1299 +f 2224/2364/1300 2125/2289/1300 2124/2308/1300 2226/2365/1300 +f 2226/2365/1301 2124/2308/1301 2123/2302/1301 2228/2366/1301 +f 2228/2366/1302 2123/2302/1302 2122/2295/1302 2230/2367/1302 +f 2230/2367/1303 2122/2295/1303 2121/2211/1303 2232/2368/1303 +f 2232/2368/1304 2121/2211/1304 2120/2210/1304 2234/2369/1304 +f 2234/2369/1305 2120/2210/1305 2119/2305/1305 2236/2370/1305 +f 2236/2370/1306 2119/2305/1306 2118/2298/1306 2238/2371/1306 +f 2238/2371/1307 2118/2298/1307 2117/2288/1307 2240/2372/1307 +f 2240/2372/1308 2117/2288/1308 2116/2287/1308 2242/2373/1308 +f 2242/2373/1309 2116/2287/1309 2115/2311/1309 2179/2374/1309 +f 2275/2375/1310 2241/2376/1310 2180/2377/1310 2244/2378/1310 +f 2243/2379/1311 2242/2373/1311 2179/2374/1311 2114/2380/1311 +f 2274/2381/1312 2239/2247/1312 2241/2376/1312 2275/2375/1312 +f 2084/2246/1313 2240/2372/1313 2242/2373/1313 2243/2379/1313 +f 2273/2382/1314 2237/2244/1314 2239/2247/1314 2274/2381/1314 +f 2085/2245/1315 2238/2371/1315 2240/2372/1315 2084/2246/1315 +f 2272/2383/1316 2235/2384/1316 2237/2244/1316 2273/2382/1316 +f 2086/2385/1317 2236/2370/1317 2238/2371/1317 2085/2245/1317 +f 2271/2386/1318 2233/2387/1318 2235/2384/1318 2272/2383/1318 +f 2087/2388/1319 2234/2369/1319 2236/2370/1319 2086/2385/1319 +f 2270/2389/1320 2231/2390/1320 2233/2387/1320 2271/2386/1320 +f 2088/2391/1321 2232/2368/1321 2234/2369/1321 2087/2388/1321 +f 2269/2392/1322 2229/2393/1322 2231/2390/1322 2270/2389/1322 +f 2089/2394/1323 2230/2367/1323 2232/2368/1323 2088/2391/1323 +f 2268/2395/1324 2227/2396/1324 2229/2393/1324 2269/2392/1324 +f 2090/2397/1325 2228/2366/1325 2230/2367/1325 2089/2394/1325 +f 2267/2398/1326 2225/2399/1326 2227/2396/1326 2268/2395/1326 +f 2091/2400/1327 2226/2365/1327 2228/2366/1327 2090/2397/1327 +f 2266/2401/1328 2223/2402/1328 2225/2399/1328 2267/2398/1328 +f 2092/2403/1329 2224/2364/1329 2226/2365/1329 2091/2400/1329 +f 2265/2404/1330 2221/2405/1330 2223/2402/1330 2266/2401/1330 +f 2093/2406/1331 2222/2363/1331 2224/2364/1331 2092/2403/1331 +f 2264/2407/1332 2219/2408/1332 2221/2405/1332 2265/2404/1332 +f 2094/2409/1333 2220/2362/1333 2222/2363/1333 2093/2406/1333 +f 2263/2410/1334 2217/2411/1334 2219/2408/1334 2264/2407/1334 +f 2095/2412/1335 2218/2361/1335 2220/2362/1335 2094/2409/1335 +f 2262/2413/1336 2215/2414/1336 2217/2411/1336 2263/2410/1336 +f 2096/2415/1337 2216/2360/1337 2218/2361/1337 2095/2412/1337 +f 2261/2416/1338 2213/2417/1338 2215/2414/1338 2262/2413/1338 +f 2097/2418/1339 2214/2359/1339 2216/2360/1339 2096/2415/1339 +f 2260/2419/1340 2211/2420/1340 2213/2417/1340 2261/2416/1340 +f 2098/2421/1341 2212/2358/1341 2214/2359/1341 2097/2418/1341 +f 2259/2422/1342 2209/2423/1342 2211/2420/1342 2260/2419/1342 +f 2099/2424/1343 2210/2357/1343 2212/2358/1343 2098/2421/1343 +f 2258/2425/1344 2207/2426/1344 2209/2423/1344 2259/2422/1344 +f 2100/2427/1345 2208/2356/1345 2210/2357/1345 2099/2424/1345 +f 2257/2428/1346 2205/2429/1346 2207/2426/1346 2258/2425/1346 +f 2101/2430/1347 2206/2355/1347 2208/2356/1347 2100/2427/1347 +f 2256/2431/1348 2203/2432/1348 2205/2429/1348 2257/2428/1348 +f 2102/2433/1349 2204/2354/1349 2206/2355/1349 2101/2430/1349 +f 2255/2434/1350 2201/2435/1350 2203/2432/1350 2256/2431/1350 +f 2103/2436/1351 2202/2353/1351 2204/2354/1351 2102/2433/1351 +f 2254/2437/1352 2199/2438/1352 2201/2435/1352 2255/2434/1352 +f 2104/2439/1353 2200/2352/1353 2202/2353/1353 2103/2436/1353 +f 2253/2440/1354 2197/2441/1354 2199/2438/1354 2254/2437/1354 +f 2105/2442/1355 2198/2351/1355 2200/2352/1355 2104/2439/1355 +f 2252/2443/1356 2195/2444/1356 2197/2441/1356 2253/2440/1356 +f 2106/2445/1357 2196/2350/1357 2198/2351/1357 2105/2442/1357 +f 2251/2446/1358 2193/2447/1358 2195/2444/1358 2252/2443/1358 +f 2107/2448/1359 2194/2349/1359 2196/2350/1359 2106/2445/1359 +f 2250/2449/1360 2191/2450/1360 2193/2447/1360 2251/2446/1360 +f 2108/2451/1361 2192/2348/1361 2194/2349/1361 2107/2448/1361 +f 2249/2452/1362 2189/2453/1362 2191/2450/1362 2250/2449/1362 +f 2109/2454/1363 2190/2347/1363 2192/2348/1363 2108/2451/1363 +f 2248/2455/1364 2187/2456/1364 2189/2453/1364 2249/2452/1364 +f 2110/2457/1365 2188/2346/1365 2190/2347/1365 2109/2454/1365 +f 2247/2458/1366 2185/2459/1366 2187/2456/1366 2248/2455/1366 +f 2111/2460/1367 2186/2345/1367 2188/2346/1367 2110/2457/1367 +f 2246/2461/1368 2183/2462/1368 2185/2459/1368 2247/2458/1368 +f 2112/2463/1369 2184/2344/1369 2186/2345/1369 2111/2460/1369 +f 2245/2464/1370 2181/2465/1370 2183/2462/1370 2246/2461/1370 +f 2113/2466/1371 2182/2282/1371 2184/2344/1371 2112/2463/1371 +f 2244/2467/1372 2180/2468/1372 2181/2465/1372 2245/2464/1372 +f 2114/2469/1373 2179/2279/1373 2182/2282/1373 2113/2466/1373 +f 2235/2384/1374 2086/2385/1374 2085/2245/1374 2237/2244/1374 +f 2233/2387/1375 2087/2388/1375 2086/2385/1375 2235/2384/1375 +f 2231/2390/1376 2088/2391/1376 2087/2388/1376 2233/2387/1376 +f 2229/2393/1377 2089/2394/1377 2088/2391/1377 2231/2390/1377 +f 2227/2396/1378 2090/2397/1378 2089/2394/1378 2229/2393/1378 +f 2225/2399/1379 2091/2400/1379 2090/2397/1379 2227/2396/1379 +f 2223/2402/1380 2092/2403/1380 2091/2400/1380 2225/2399/1380 +f 2221/2405/1381 2093/2406/1381 2092/2403/1381 2223/2402/1381 +f 2219/2408/1382 2094/2409/1382 2093/2406/1382 2221/2405/1382 +f 2217/2411/1383 2095/2412/1383 2094/2409/1383 2219/2408/1383 +f 2215/2414/1384 2096/2415/1384 2095/2412/1384 2217/2411/1384 +f 2213/2417/1385 2097/2418/1385 2096/2415/1385 2215/2414/1385 +f 2211/2420/1386 2098/2421/1386 2097/2418/1386 2213/2417/1386 +f 2209/2423/1387 2099/2424/1387 2098/2421/1387 2211/2420/1387 +f 2207/2426/1388 2100/2427/1388 2099/2424/1388 2209/2423/1388 +f 2205/2429/1389 2101/2430/1389 2100/2427/1389 2207/2426/1389 +f 2203/2432/1390 2102/2433/1390 2101/2430/1390 2205/2429/1390 +f 2201/2435/1391 2103/2436/1391 2102/2433/1391 2203/2432/1391 +f 2199/2438/1392 2104/2439/1392 2103/2436/1392 2201/2435/1392 +f 2197/2441/1393 2105/2442/1393 2104/2439/1393 2199/2438/1393 +f 2195/2444/1394 2106/2445/1394 2105/2442/1394 2197/2441/1394 +f 2193/2447/1395 2107/2448/1395 2106/2445/1395 2195/2444/1395 +f 2191/2450/1396 2108/2451/1396 2107/2448/1396 2193/2447/1396 +f 2189/2453/1397 2109/2454/1397 2108/2451/1397 2191/2450/1397 +f 2187/2456/1398 2110/2457/1398 2109/2454/1398 2189/2453/1398 +f 2185/2459/1399 2111/2460/1399 2110/2457/1399 2187/2456/1399 +f 2183/2462/1400 2112/2463/1400 2111/2460/1400 2185/2459/1400 +f 2181/2465/1401 2113/2466/1401 2112/2463/1401 2183/2462/1401 +f 2180/2468/1402 2114/2469/1402 2113/2466/1402 2181/2465/1402 +f 2239/2247/1403 2084/2246/1403 2243/2379/1403 2241/2376/1403 +f 2241/2376/1404 2243/2379/1404 2114/2380/1404 2180/2377/1404 +f 2147/2312/1405 2244/2467/1405 2245/2464/1405 2178/2313/1405 +f 2178/2313/1406 2245/2464/1406 2246/2461/1406 2177/2314/1406 +f 2177/2314/1407 2246/2461/1407 2247/2458/1407 2176/2315/1407 +f 2176/2315/1408 2247/2458/1408 2248/2455/1408 2175/2316/1408 +f 2175/2316/1409 2248/2455/1409 2249/2452/1409 2174/2317/1409 +f 2174/2317/1410 2249/2452/1410 2250/2449/1410 2173/2318/1410 +f 2173/2318/1411 2250/2449/1411 2251/2446/1411 2172/2319/1411 +f 2172/2319/1412 2251/2446/1412 2252/2443/1412 2171/2320/1412 +f 2171/2320/1413 2252/2443/1413 2253/2440/1413 2170/2321/1413 +f 2170/2321/1414 2253/2440/1414 2254/2437/1414 2169/2322/1414 +f 2169/2322/1415 2254/2437/1415 2255/2434/1415 2168/2323/1415 +f 2168/2323/1416 2255/2434/1416 2256/2431/1416 2167/2324/1416 +f 2167/2324/1417 2256/2431/1417 2257/2428/1417 2166/2325/1417 +f 2166/2325/1418 2257/2428/1418 2258/2425/1418 2165/2326/1418 +f 2165/2326/1419 2258/2425/1419 2259/2422/1419 2164/2327/1419 +f 2164/2327/1420 2259/2422/1420 2260/2419/1420 2163/2328/1420 +f 2163/2328/1421 2260/2419/1421 2261/2416/1421 2162/2329/1421 +f 2162/2329/1422 2261/2416/1422 2262/2413/1422 2161/2330/1422 +f 2161/2330/1423 2262/2413/1423 2263/2410/1423 2160/2331/1423 +f 2160/2331/1424 2263/2410/1424 2264/2407/1424 2159/2332/1424 +f 2159/2332/1425 2264/2407/1425 2265/2404/1425 2158/2333/1425 +f 2158/2333/1426 2265/2404/1426 2266/2401/1426 2157/2334/1426 +f 2157/2334/1427 2266/2401/1427 2267/2398/1427 2156/2335/1427 +f 2156/2335/1428 2267/2398/1428 2268/2395/1428 2155/2336/1428 +f 2155/2336/1429 2268/2395/1429 2269/2392/1429 2154/2337/1429 +f 2154/2337/1430 2269/2392/1430 2270/2389/1430 2153/2338/1430 +f 2153/2338/1431 2270/2389/1431 2271/2386/1431 2152/2339/1431 +f 2152/2339/1432 2271/2386/1432 2272/2383/1432 2151/2340/1432 +f 2151/2340/1433 2272/2383/1433 2273/2382/1433 2150/2341/1433 +f 2150/2341/1434 2273/2382/1434 2274/2381/1434 2149/2342/1434 +f 2149/2342/1435 2274/2381/1435 2275/2375/1435 2148/2343/1435 +f 2148/2343/1436 2275/2375/1436 2244/2378/1436 2147/2312/1436 +f 2276/2470/954 2277/2471/954 2279/2472/954 2278/2473/954 +f 2278/2473/955 2279/2472/955 2281/2474/955 2280/2475/955 +f 2280/2475/956 2281/2474/956 2283/2476/956 2282/2477/956 +f 2282/2477/957 2283/2476/957 2285/2478/957 2284/2479/957 +f 2284/2479/958 2285/2478/958 2287/2480/958 2286/2481/958 +f 2286/2481/959 2287/2480/959 2289/2482/959 2288/2483/959 +f 2288/2483/960 2289/2482/960 2291/2484/960 2290/2485/960 +f 2290/2485/961 2291/2484/961 2293/2486/961 2292/2487/961 +f 2292/2487/962 2293/2486/962 2295/2488/962 2294/2489/962 +f 2294/2489/963 2295/2488/963 2297/2490/963 2296/2491/963 +f 2296/2491/964 2297/2490/964 2299/2492/964 2298/2493/964 +f 2298/2493/965 2299/2492/965 2301/2494/965 2300/2495/965 +f 2300/2495/966 2301/2494/966 2303/2496/966 2302/2497/966 +f 2302/2497/967 2303/2496/967 2305/2498/967 2304/2499/967 +f 2304/2499/968 2305/2498/968 2307/2500/968 2306/2501/968 +f 2306/2501/969 2307/2500/969 2309/2502/969 2308/2503/969 +f 2308/2503/970 2309/2502/970 2311/2504/970 2310/2505/970 +f 2310/2505/971 2311/2504/971 2313/2506/971 2312/2507/971 +f 2312/2507/972 2313/2506/972 2315/2508/972 2314/2509/972 +f 2314/2509/973 2315/2508/973 2317/2510/973 2316/2511/973 +f 2316/2511/974 2317/2510/974 2319/2512/974 2318/2513/974 +f 2318/2513/975 2319/2512/975 2321/2514/975 2320/2515/975 +f 2320/2515/976 2321/2514/976 2323/2516/976 2322/2517/976 +f 2322/2517/977 2323/2516/977 2325/2518/977 2324/2519/977 +f 2324/2519/978 2325/2518/978 2327/2520/978 2326/2521/978 +f 2326/2521/979 2327/2520/979 2329/2522/979 2328/2523/979 +f 2328/2523/980 2329/2522/980 2331/2524/980 2330/2525/980 +f 2330/2525/981 2331/2524/981 2333/2526/981 2332/2527/981 +f 2332/2527/982 2333/2526/982 2335/2528/982 2334/2529/982 +f 2334/2529/983 2335/2528/983 2337/2530/983 2336/2531/983 +f 2297/2490/984 2295/2488/984 2349/2532/984 2350/2533/984 +f 2336/2531/985 2337/2530/985 2339/2534/985 2338/2535/985 +f 2338/2535/986 2339/2534/986 2277/2536/986 2276/2537/986 +f 2286/2481/566 2288/2483/566 2410/2538/566 2409/2539/566 +f 2354/2540/987 2353/2541/987 2372/2542/987 +f 2315/2508/1437 2313/2506/1437 2358/2543/1437 2359/2544/1437 +f 2333/2526/989 2331/2524/989 2367/2545/989 2368/2546/989 +f 2289/2482/990 2287/2480/990 2345/2547/990 2346/2548/990 +f 2307/2500/991 2305/2498/991 2354/2540/991 2355/2549/991 +f 2325/2518/992 2323/2516/992 2363/2550/992 2364/2551/992 +f 2281/2474/993 2279/2472/993 2340/2552/993 2342/2553/993 +f 2299/2492/994 2297/2490/994 2350/2533/994 2351/2554/994 +f 2317/2510/995 2315/2508/995 2359/2544/995 2360/2555/995 +f 2335/2528/996 2333/2526/996 2368/2546/996 2369/2556/996 +f 2291/2484/997 2289/2482/997 2346/2548/997 2347/2557/997 +f 2309/2502/998 2307/2500/998 2355/2549/998 2356/2558/998 +f 2327/2520/999 2325/2518/999 2364/2551/999 2365/2559/999 +f 2283/2476/1438 2281/2474/1438 2342/2553/1438 2343/2560/1438 +f 2301/2494/1001 2299/2492/1001 2351/2554/1001 2352/2561/1001 +f 2319/2512/1002 2317/2510/1002 2360/2555/1002 2361/2562/1002 +f 2337/2530/1003 2335/2528/1003 2369/2556/1003 2370/2563/1003 +f 2293/2486/1004 2291/2484/1004 2347/2557/1004 2348/2564/1004 +f 2311/2504/1005 2309/2502/1005 2356/2558/1005 2357/2565/1005 +f 2329/2522/1006 2327/2520/1006 2365/2559/1006 2366/2566/1006 +f 2285/2478/1007 2283/2476/1007 2343/2560/1007 2344/2567/1007 +f 2303/2496/1008 2301/2494/1008 2352/2561/1008 2353/2541/1008 +f 2321/2514/1009 2319/2512/1009 2361/2562/1009 2362/2568/1009 +f 2339/2534/1010 2337/2530/1010 2370/2563/1010 2371/2569/1010 +f 2295/2488/1011 2293/2486/1011 2348/2564/1011 2349/2532/1011 +f 2313/2506/1012 2311/2504/1012 2357/2565/1012 2358/2543/1012 +f 2331/2524/1013 2329/2522/1013 2366/2566/1013 2367/2545/1013 +f 2287/2480/1014 2285/2478/1014 2344/2567/1014 2345/2547/1014 +f 2305/2498/1015 2303/2496/1015 2353/2541/1015 2354/2540/1015 +f 2323/2516/1016 2321/2514/1016 2362/2568/1016 2363/2550/1016 +f 2279/2472/1017 2277/2471/1017 2341/2570/1017 2340/2552/1017 +f 2277/2536/1018 2339/2534/1018 2371/2569/1018 2341/2571/1018 +f 2526/2572/1439 2528/2573/1439 2373/2574/1439 2374/2575/1439 +f 2340/2552/1020 2341/2570/1020 2372/2576/1020 +f 2368/2546/1021 2367/2545/1021 2372/2577/1021 +f 2355/2549/1022 2354/2540/1022 2372/2578/1022 +f 2342/2553/1023 2340/2552/1023 2372/2579/1023 +f 2369/2556/1024 2368/2546/1024 2372/2580/1024 +f 2356/2558/1025 2355/2549/1025 2372/2581/1025 +f 2343/2560/1026 2342/2553/1026 2372/2582/1026 +f 2370/2563/1027 2369/2556/1027 2372/2583/1027 +f 2357/2565/1028 2356/2558/1028 2372/2584/1028 +f 2344/2567/1029 2343/2560/1029 2372/2585/1029 +f 2371/2569/1030 2370/2563/1030 2372/2586/1030 +f 2358/2543/1031 2357/2565/1031 2372/2587/1031 +f 2345/2547/1032 2344/2567/1032 2372/2588/1032 +f 2341/2571/1033 2371/2569/1033 2372/2589/1033 +f 2359/2544/1034 2358/2543/1034 2372/2590/1034 +f 2346/2548/1035 2345/2547/1035 2372/2591/1035 +f 2360/2555/1036 2359/2544/1036 2372/2592/1036 +f 2347/2557/1037 2346/2548/1037 2372/2593/1037 +f 2361/2562/1038 2360/2555/1038 2372/2594/1038 +f 2348/2564/1039 2347/2557/1039 2372/2595/1039 +f 2362/2568/1040 2361/2562/1040 2372/2596/1040 +f 2349/2532/1041 2348/2564/1041 2372/2597/1041 +f 2363/2550/1042 2362/2568/1042 2372/2598/1042 +f 2350/2533/1043 2349/2532/1043 2372/2599/1043 +f 2364/2551/1044 2363/2550/1044 2372/2600/1044 +f 2351/2554/1045 2350/2533/1045 2372/2601/1045 +f 2365/2559/1046 2364/2551/1046 2372/2602/1046 +f 2352/2561/1047 2351/2554/1047 2372/2603/1047 +f 2366/2566/1048 2365/2559/1048 2372/2604/1048 +f 2353/2541/1049 2352/2561/1049 2372/2605/1049 +f 2367/2545/1050 2366/2566/1050 2372/2606/1050 +f 2468/2607/1440 2471/2608/1440 2435/2609/1440 2404/2610/1440 +f 2304/2499/566 2306/2501/566 2419/2611/566 2418/2612/566 +f 2322/2517/566 2324/2519/566 2428/2613/566 2427/2614/566 +f 2278/2473/566 2280/2475/566 2406/2615/566 2405/2616/566 +f 2296/2491/566 2298/2493/566 2415/2617/566 2414/2618/566 +f 2314/2509/566 2316/2511/566 2424/2619/566 2423/2620/566 +f 2332/2527/566 2334/2529/566 2433/2621/566 2432/2622/566 +f 2288/2483/566 2290/2485/566 2411/2623/566 2410/2538/566 +f 2306/2501/566 2308/2503/566 2420/2624/566 2419/2611/566 +f 2324/2519/566 2326/2521/566 2429/2625/566 2428/2613/566 +f 2280/2475/566 2282/2477/566 2407/2626/566 2406/2615/566 +f 2298/2493/566 2300/2495/566 2416/2627/566 2415/2617/566 +f 2316/2511/566 2318/2513/566 2425/2628/566 2424/2619/566 +f 2334/2529/566 2336/2531/566 2434/2629/566 2433/2621/566 +f 2290/2485/566 2292/2487/566 2412/2630/566 2411/2623/566 +f 2308/2503/566 2310/2505/566 2421/2631/566 2420/2624/566 +f 2326/2521/566 2328/2523/566 2430/2632/566 2429/2625/566 +f 2282/2477/566 2284/2479/566 2408/2633/566 2407/2626/566 +f 2300/2495/566 2302/2497/566 2417/2634/566 2416/2627/566 +f 2318/2513/566 2320/2515/566 2426/2635/566 2425/2628/566 +f 2336/2531/566 2338/2535/566 2435/2609/566 2434/2629/566 +f 2292/2487/566 2294/2489/566 2413/2636/566 2412/2630/566 +f 2310/2505/566 2312/2507/566 2422/2637/566 2421/2631/566 +f 2328/2523/566 2330/2525/566 2431/2638/566 2430/2632/566 +f 2284/2479/566 2286/2481/566 2409/2539/566 2408/2633/566 +f 2302/2497/566 2304/2499/566 2418/2612/566 2417/2634/566 +f 2320/2515/566 2322/2517/566 2427/2614/566 2426/2635/566 +f 2276/2470/566 2278/2473/566 2405/2616/566 2404/2639/566 +f 2338/2535/566 2276/2537/566 2404/2610/566 2435/2609/566 +f 2294/2489/566 2296/2491/566 2414/2618/566 2413/2636/566 +f 2312/2507/566 2314/2509/566 2423/2620/566 2422/2637/566 +f 2330/2525/566 2332/2527/566 2432/2622/566 2431/2638/566 +f 2448/2640/1441 2449/2641/1441 2578/2642/1441 2577/2643/1441 +f 2471/2608/1442 2473/2644/1442 2434/2629/1442 2435/2609/1442 +f 2473/2644/1443 2475/2645/1443 2433/2621/1443 2434/2629/1443 +f 2475/2645/1444 2477/2646/1444 2432/2622/1444 2433/2621/1444 +f 2477/2646/1445 2479/2647/1445 2431/2638/1445 2432/2622/1445 +f 2479/2647/1446 2481/2648/1446 2430/2632/1446 2431/2638/1446 +f 2481/2648/1447 2483/2649/1447 2429/2625/1447 2430/2632/1447 +f 2483/2649/1448 2485/2650/1448 2428/2613/1448 2429/2625/1448 +f 2485/2650/1449 2487/2651/1449 2427/2614/1449 2428/2613/1449 +f 2487/2651/1450 2489/2652/1450 2426/2635/1450 2427/2614/1450 +f 2489/2652/1451 2491/2653/1451 2425/2628/1451 2426/2635/1451 +f 2491/2653/1452 2493/2654/1452 2424/2619/1452 2425/2628/1452 +f 2493/2654/1453 2495/2655/1453 2423/2620/1453 2424/2619/1453 +f 2495/2655/1454 2497/2656/1454 2422/2637/1454 2423/2620/1454 +f 2497/2656/1455 2499/2657/1455 2421/2631/1455 2422/2637/1455 +f 2499/2657/1456 2501/2658/1456 2420/2624/1456 2421/2631/1456 +f 2501/2658/1457 2503/2659/1457 2419/2611/1457 2420/2624/1457 +f 2503/2659/1458 2505/2660/1458 2418/2612/1458 2419/2611/1458 +f 2505/2660/1459 2507/2661/1459 2417/2634/1459 2418/2612/1459 +f 2507/2661/1460 2509/2662/1460 2416/2627/1460 2417/2634/1460 +f 2509/2662/1461 2511/2663/1461 2415/2617/1461 2416/2627/1461 +f 2511/2663/1462 2513/2664/1462 2414/2618/1462 2415/2617/1462 +f 2513/2664/1463 2515/2665/1463 2413/2636/1463 2414/2618/1463 +f 2515/2665/1464 2517/2666/1464 2412/2630/1464 2413/2636/1464 +f 2517/2666/1465 2519/2667/1465 2411/2623/1465 2412/2630/1465 +f 2519/2667/1466 2521/2668/1466 2410/2538/1466 2411/2623/1466 +f 2521/2668/1467 2523/2669/1467 2409/2539/1467 2410/2538/1467 +f 2523/2669/1468 2525/2670/1468 2408/2633/1468 2409/2539/1468 +f 2525/2670/1469 2527/2671/1469 2407/2626/1469 2408/2633/1469 +f 2527/2671/1470 2529/2672/1470 2406/2615/1470 2407/2626/1470 +f 2529/2672/1471 2531/2673/1471 2405/2616/1471 2406/2615/1471 +f 2531/2673/1472 2468/2674/1472 2404/2639/1472 2405/2616/1472 +f 2564/2675/1473 2533/2676/1473 2469/2677/1473 2530/2678/1473 +f 2532/2679/1474 2403/2680/1474 2468/2674/1474 2531/2673/1474 +f 2563/2681/1475 2564/2675/1475 2530/2678/1475 2528/2573/1475 +f 2373/2574/1476 2532/2679/1476 2531/2673/1476 2529/2672/1476 +f 2562/2682/1477 2563/2681/1477 2528/2573/1477 2526/2572/1477 +f 2374/2575/1478 2373/2574/1478 2529/2672/1478 2527/2671/1478 +f 2561/2683/1479 2562/2682/1479 2526/2572/1479 2524/2684/1479 +f 2375/2685/1480 2374/2575/1480 2527/2671/1480 2525/2670/1480 +f 2560/2686/1481 2561/2683/1481 2524/2684/1481 2522/2687/1481 +f 2376/2688/1482 2375/2685/1482 2525/2670/1482 2523/2669/1482 +f 2559/2689/1483 2560/2686/1483 2522/2687/1483 2520/2690/1483 +f 2377/2691/1484 2376/2688/1484 2523/2669/1484 2521/2668/1484 +f 2558/2692/1485 2559/2689/1485 2520/2690/1485 2518/2693/1485 +f 2378/2694/1486 2377/2691/1486 2521/2668/1486 2519/2667/1486 +f 2557/2695/1487 2558/2692/1487 2518/2693/1487 2516/2696/1487 +f 2379/2697/1488 2378/2694/1488 2519/2667/1488 2517/2666/1488 +f 2556/2698/1489 2557/2695/1489 2516/2696/1489 2514/2699/1489 +f 2380/2700/1490 2379/2697/1490 2517/2666/1490 2515/2665/1490 +f 2555/2701/1491 2556/2698/1491 2514/2699/1491 2512/2702/1491 +f 2381/2703/1492 2380/2700/1492 2515/2665/1492 2513/2664/1492 +f 2554/2704/1493 2555/2701/1493 2512/2702/1493 2510/2705/1493 +f 2382/2706/1494 2381/2703/1494 2513/2664/1494 2511/2663/1494 +f 2553/2707/1495 2554/2704/1495 2510/2705/1495 2508/2708/1495 +f 2383/2709/1496 2382/2706/1496 2511/2663/1496 2509/2662/1496 +f 2552/2710/1497 2553/2707/1497 2508/2708/1497 2506/2711/1497 +f 2384/2712/1498 2383/2709/1498 2509/2662/1498 2507/2661/1498 +f 2551/2713/1499 2552/2710/1499 2506/2711/1499 2504/2714/1499 +f 2385/2715/1500 2384/2712/1500 2507/2661/1500 2505/2660/1500 +f 2550/2716/1501 2551/2713/1501 2504/2714/1501 2502/2717/1501 +f 2386/2718/1502 2385/2715/1502 2505/2660/1502 2503/2659/1502 +f 2549/2719/1503 2550/2716/1503 2502/2717/1503 2500/2720/1503 +f 2387/2721/1504 2386/2718/1504 2503/2659/1504 2501/2658/1504 +f 2548/2722/1505 2549/2719/1505 2500/2720/1505 2498/2723/1505 +f 2388/2724/1506 2387/2721/1506 2501/2658/1506 2499/2657/1506 +f 2547/2725/1507 2548/2722/1507 2498/2723/1507 2496/2726/1507 +f 2389/2727/1508 2388/2724/1508 2499/2657/1508 2497/2656/1508 +f 2546/2728/1509 2547/2725/1509 2496/2726/1509 2494/2729/1509 +f 2390/2730/1510 2389/2727/1510 2497/2656/1510 2495/2655/1510 +f 2545/2731/1511 2546/2728/1511 2494/2729/1511 2492/2732/1511 +f 2391/2733/1512 2390/2730/1512 2495/2655/1512 2493/2654/1512 +f 2544/2734/1513 2545/2731/1513 2492/2732/1513 2490/2735/1513 +f 2392/2736/1514 2391/2733/1514 2493/2654/1514 2491/2653/1514 +f 2543/2737/1515 2544/2734/1515 2490/2735/1515 2488/2738/1515 +f 2393/2739/1516 2392/2736/1516 2491/2653/1516 2489/2652/1516 +f 2542/2740/1517 2543/2737/1517 2488/2738/1517 2486/2741/1517 +f 2394/2742/1518 2393/2739/1518 2489/2652/1518 2487/2651/1518 +f 2541/2743/1519 2542/2740/1519 2486/2741/1519 2484/2744/1519 +f 2395/2745/1520 2394/2742/1520 2487/2651/1520 2485/2650/1520 +f 2540/2746/1521 2541/2743/1521 2484/2744/1521 2482/2747/1521 +f 2396/2748/1522 2395/2745/1522 2485/2650/1522 2483/2649/1522 +f 2539/2749/1523 2540/2746/1523 2482/2747/1523 2480/2750/1523 +f 2397/2751/1524 2396/2748/1524 2483/2649/1524 2481/2648/1524 +f 2538/2752/1525 2539/2749/1525 2480/2750/1525 2478/2753/1525 +f 2398/2754/1526 2397/2751/1526 2481/2648/1526 2479/2647/1526 +f 2537/2755/1527 2538/2752/1527 2478/2753/1527 2476/2756/1527 +f 2399/2757/1528 2398/2754/1528 2479/2647/1528 2477/2646/1528 +f 2536/2758/1529 2537/2755/1529 2476/2756/1529 2474/2759/1529 +f 2400/2760/1530 2399/2757/1530 2477/2646/1530 2475/2645/1530 +f 2535/2761/1531 2536/2758/1531 2474/2759/1531 2472/2762/1531 +f 2401/2763/1532 2400/2760/1532 2475/2645/1532 2473/2644/1532 +f 2534/2764/1533 2535/2761/1533 2472/2762/1533 2470/2765/1533 +f 2402/2766/1534 2401/2763/1534 2473/2644/1534 2471/2608/1534 +f 2533/2767/1535 2534/2764/1535 2470/2765/1535 2469/2768/1535 +f 2403/2769/1536 2402/2766/1536 2471/2608/1536 2468/2607/1536 +f 2524/2684/1537 2526/2572/1537 2374/2575/1537 2375/2685/1537 +f 2522/2687/1538 2524/2684/1538 2375/2685/1538 2376/2688/1538 +f 2520/2690/1539 2522/2687/1539 2376/2688/1539 2377/2691/1539 +f 2518/2693/1540 2520/2690/1540 2377/2691/1540 2378/2694/1540 +f 2516/2696/1541 2518/2693/1541 2378/2694/1541 2379/2697/1541 +f 2514/2699/1542 2516/2696/1542 2379/2697/1542 2380/2700/1542 +f 2512/2702/1543 2514/2699/1543 2380/2700/1543 2381/2703/1543 +f 2510/2705/1544 2512/2702/1544 2381/2703/1544 2382/2706/1544 +f 2508/2708/1545 2510/2705/1545 2382/2706/1545 2383/2709/1545 +f 2506/2711/1546 2508/2708/1546 2383/2709/1546 2384/2712/1546 +f 2504/2714/1547 2506/2711/1547 2384/2712/1547 2385/2715/1547 +f 2502/2717/1548 2504/2714/1548 2385/2715/1548 2386/2718/1548 +f 2500/2720/1549 2502/2717/1549 2386/2718/1549 2387/2721/1549 +f 2498/2723/1550 2500/2720/1550 2387/2721/1550 2388/2724/1550 +f 2496/2726/1551 2498/2723/1551 2388/2724/1551 2389/2727/1551 +f 2494/2729/1552 2496/2726/1552 2389/2727/1552 2390/2730/1552 +f 2492/2732/1553 2494/2729/1553 2390/2730/1553 2391/2733/1553 +f 2490/2735/1554 2492/2732/1554 2391/2733/1554 2392/2736/1554 +f 2488/2738/1555 2490/2735/1555 2392/2736/1555 2393/2739/1555 +f 2486/2741/1556 2488/2738/1556 2393/2739/1556 2394/2742/1556 +f 2484/2744/1557 2486/2741/1557 2394/2742/1557 2395/2745/1557 +f 2482/2747/1558 2484/2744/1558 2395/2745/1558 2396/2748/1558 +f 2480/2750/1559 2482/2747/1559 2396/2748/1559 2397/2751/1559 +f 2478/2753/1560 2480/2750/1560 2397/2751/1560 2398/2754/1560 +f 2476/2756/1561 2478/2753/1561 2398/2754/1561 2399/2757/1561 +f 2474/2759/1562 2476/2756/1562 2399/2757/1562 2400/2760/1562 +f 2472/2762/1563 2474/2759/1563 2400/2760/1563 2401/2763/1563 +f 2470/2765/1564 2472/2762/1564 2401/2763/1564 2402/2766/1564 +f 2469/2768/1565 2470/2765/1565 2402/2766/1565 2403/2769/1565 +f 2528/2573/1566 2530/2678/1566 2532/2679/1566 2373/2574/1566 +f 2530/2678/1567 2469/2677/1567 2403/2680/1567 2532/2679/1567 +f 2436/2770/1568 2467/2771/1568 2534/2764/1568 2533/2767/1568 +f 2467/2771/1569 2466/2772/1569 2535/2761/1569 2534/2764/1569 +f 2466/2772/1570 2465/2773/1570 2536/2758/1570 2535/2761/1570 +f 2465/2773/1571 2464/2774/1571 2537/2755/1571 2536/2758/1571 +f 2464/2774/1572 2463/2775/1572 2538/2752/1572 2537/2755/1572 +f 2463/2775/1573 2462/2776/1573 2539/2749/1573 2538/2752/1573 +f 2462/2776/1574 2461/2777/1574 2540/2746/1574 2539/2749/1574 +f 2461/2777/1575 2460/2778/1575 2541/2743/1575 2540/2746/1575 +f 2460/2778/1576 2459/2779/1576 2542/2740/1576 2541/2743/1576 +f 2459/2779/1577 2458/2780/1577 2543/2737/1577 2542/2740/1577 +f 2458/2780/1578 2457/2781/1578 2544/2734/1578 2543/2737/1578 +f 2457/2781/1579 2456/2782/1579 2545/2731/1579 2544/2734/1579 +f 2456/2782/1580 2455/2783/1580 2546/2728/1580 2545/2731/1580 +f 2455/2783/1581 2454/2784/1581 2547/2725/1581 2546/2728/1581 +f 2454/2784/1582 2453/2785/1582 2548/2722/1582 2547/2725/1582 +f 2453/2785/1583 2452/2786/1583 2549/2719/1583 2548/2722/1583 +f 2452/2786/1584 2451/2787/1584 2550/2716/1584 2549/2719/1584 +f 2451/2787/1585 2450/2788/1585 2551/2713/1585 2550/2716/1585 +f 2450/2788/1586 2449/2641/1586 2552/2710/1586 2551/2713/1586 +f 2449/2641/1587 2448/2640/1587 2553/2707/1587 2552/2710/1587 +f 2448/2640/1588 2447/2789/1588 2554/2704/1588 2553/2707/1588 +f 2447/2789/1589 2446/2790/1589 2555/2701/1589 2554/2704/1589 +f 2446/2790/1590 2445/2791/1590 2556/2698/1590 2555/2701/1590 +f 2445/2791/1591 2444/2792/1591 2557/2695/1591 2556/2698/1591 +f 2444/2792/1592 2443/2793/1592 2558/2692/1592 2557/2695/1592 +f 2443/2793/1593 2442/2794/1593 2559/2689/1593 2558/2692/1593 +f 2442/2794/1594 2441/2795/1594 2560/2686/1594 2559/2689/1594 +f 2441/2795/1595 2440/2796/1595 2561/2683/1595 2560/2686/1595 +f 2440/2796/1596 2439/2797/1596 2562/2682/1596 2561/2683/1596 +f 2439/2797/1597 2438/2798/1597 2563/2681/1597 2562/2682/1597 +f 2438/2798/1598 2437/2799/1598 2564/2675/1598 2563/2681/1598 +f 2437/2799/1599 2436/2770/1599 2533/2676/1599 2564/2675/1599 +f 2565/2800/566 2566/2801/566 2567/2802/566 2568/2803/566 2569/2804/566 2570/2805/566 2571/2806/566 2572/2807/566 2573/2808/566 2574/2809/566 2575/2810/566 2576/2811/566 2577/2643/566 2578/2642/566 2579/2812/566 2580/2813/566 2581/2814/566 2582/2815/566 2583/2816/566 2584/2817/566 2585/2818/566 2586/2819/566 2587/2820/566 2588/2821/566 2589/2822/566 2590/2823/566 2591/2824/566 2592/2825/566 2593/2826/566 2594/2827/566 2595/2828/566 2596/2829/566 +f 2462/2776/1600 2463/2775/1600 2592/2825/1600 2591/2824/1600 +f 2449/2641/1601 2450/2788/1601 2579/2812/1601 2578/2642/1601 +f 2436/2770/1602 2437/2799/1602 2566/2801/1602 2565/2800/1602 +f 2463/2775/1603 2464/2774/1603 2593/2826/1603 2592/2825/1603 +f 2450/2788/1604 2451/2787/1604 2580/2813/1604 2579/2812/1604 +f 2437/2799/1605 2438/2798/1605 2567/2802/1605 2566/2801/1605 +f 2464/2774/1606 2465/2773/1606 2594/2827/1606 2593/2826/1606 +f 2451/2787/1607 2452/2786/1607 2581/2814/1607 2580/2813/1607 +f 2438/2798/1608 2439/2797/1608 2568/2803/1608 2567/2802/1608 +f 2465/2773/1609 2466/2772/1609 2595/2828/1609 2594/2827/1609 +f 2452/2786/1610 2453/2785/1610 2582/2815/1610 2581/2814/1610 +f 2439/2797/1611 2440/2796/1611 2569/2804/1611 2568/2803/1611 +f 2466/2772/1612 2467/2771/1612 2596/2829/1612 2595/2828/1612 +f 2453/2785/1613 2454/2784/1613 2583/2816/1613 2582/2815/1613 +f 2440/2796/1614 2441/2795/1614 2570/2805/1614 2569/2804/1614 +f 2467/2771/1615 2436/2770/1615 2565/2800/1615 2596/2829/1615 +f 2454/2784/1616 2455/2783/1616 2584/2817/1616 2583/2816/1616 +f 2441/2795/1617 2442/2794/1617 2571/2806/1617 2570/2805/1617 +f 2455/2783/1618 2456/2782/1618 2585/2818/1618 2584/2817/1618 +f 2442/2794/1619 2443/2793/1619 2572/2807/1619 2571/2806/1619 +f 2456/2782/1620 2457/2781/1620 2586/2819/1620 2585/2818/1620 +f 2443/2793/1621 2444/2792/1621 2573/2808/1621 2572/2807/1621 +f 2457/2781/1622 2458/2780/1622 2587/2820/1622 2586/2819/1622 +f 2444/2792/1623 2445/2791/1623 2574/2809/1623 2573/2808/1623 +f 2458/2780/1624 2459/2779/1624 2588/2821/1624 2587/2820/1624 +f 2445/2791/1625 2446/2790/1625 2575/2810/1625 2574/2809/1625 +f 2459/2779/1626 2460/2778/1626 2589/2822/1626 2588/2821/1626 +f 2446/2790/1627 2447/2789/1627 2576/2811/1627 2575/2810/1627 +f 2460/2778/1628 2461/2777/1628 2590/2823/1628 2589/2822/1628 +f 2447/2789/1629 2448/2640/1629 2577/2643/1629 2576/2811/1629 +f 2461/2777/1630 2462/2776/1630 2591/2824/1630 2590/2823/1630 +f 2597/2830/1210 2599/2831/1210 2600/2832/1210 2598/2833/1210 +f 2599/2831/1211 2601/2834/1211 2602/2835/1211 2600/2832/1211 +f 2601/2834/1212 2603/2836/1212 2604/2837/1212 2602/2835/1212 +f 2603/2836/1213 2605/2838/1213 2606/2839/1213 2604/2837/1213 +f 2605/2838/1214 2607/2840/1214 2608/2841/1214 2606/2839/1214 +f 2607/2840/1215 2609/2842/1215 2610/2843/1215 2608/2841/1215 +f 2609/2842/1216 2611/2844/1216 2612/2845/1216 2610/2843/1216 +f 2611/2844/1217 2613/2846/1217 2614/2847/1217 2612/2845/1217 +f 2613/2846/1218 2615/2848/1218 2616/2849/1218 2614/2847/1218 +f 2615/2848/1219 2617/2850/1219 2618/2851/1219 2616/2849/1219 +f 2617/2850/1220 2619/2852/1220 2620/2853/1220 2618/2851/1220 +f 2619/2852/1221 2621/2854/1221 2622/2855/1221 2620/2853/1221 +f 2621/2854/1222 2623/2856/1222 2624/2857/1222 2622/2855/1222 +f 2623/2856/1223 2625/2858/1223 2626/2859/1223 2624/2857/1223 +f 2625/2858/1224 2627/2860/1224 2628/2861/1224 2626/2859/1224 +f 2627/2860/1225 2629/2862/1225 2630/2863/1225 2628/2861/1225 +f 2629/2862/1226 2631/2864/1226 2632/2865/1226 2630/2863/1226 +f 2631/2864/1227 2633/2866/1227 2634/2867/1227 2632/2865/1227 +f 2633/2866/1228 2635/2868/1228 2636/2869/1228 2634/2867/1228 +f 2635/2868/1229 2637/2870/1229 2638/2871/1229 2636/2869/1229 +f 2637/2870/1230 2639/2872/1230 2640/2873/1230 2638/2871/1230 +f 2639/2872/1231 2641/2874/1231 2642/2875/1231 2640/2873/1231 +f 2641/2874/1232 2643/2876/1232 2644/2877/1232 2642/2875/1232 +f 2643/2876/1233 2645/2878/1233 2646/2879/1233 2644/2877/1233 +f 2645/2878/1234 2647/2880/1234 2648/2881/1234 2646/2879/1234 +f 2647/2880/1235 2649/2882/1235 2650/2883/1235 2648/2881/1235 +f 2649/2882/1236 2651/2884/1236 2652/2885/1236 2650/2883/1236 +f 2651/2884/1237 2653/2886/1237 2654/2887/1237 2652/2885/1237 +f 2653/2886/1238 2655/2888/1238 2656/2889/1238 2654/2887/1238 +f 2655/2888/1239 2657/2890/1239 2658/2891/1239 2656/2889/1239 +f 2618/2851/1240 2671/2892/1240 2670/2893/1240 2616/2849/1240 +f 2657/2890/1241 2659/2894/1241 2660/2895/1241 2658/2891/1241 +f 2659/2894/1242 2597/2896/1242 2598/2897/1242 2660/2895/1242 +f 2607/2840/566 2730/2898/566 2731/2899/566 2609/2842/566 +f 2675/2900/1026 2693/2901/1026 2674/2902/1026 +f 2636/2869/1243 2680/2903/1243 2679/2904/1243 2634/2867/1243 +f 2654/2887/1244 2689/2905/1244 2688/2906/1244 2652/2885/1244 +f 2610/2843/1245 2667/2907/1245 2666/2908/1245 2608/2841/1245 +f 2628/2861/1246 2676/2909/1246 2675/2900/1246 2626/2859/1246 +f 2646/2879/1247 2685/2910/1247 2684/2911/1247 2644/2877/1247 +f 2602/2835/1248 2663/2912/1248 2661/2913/1248 2600/2832/1248 +f 2620/2853/1249 2672/2914/1249 2671/2892/1249 2618/2851/1249 +f 2638/2871/1250 2681/2915/1250 2680/2903/1250 2636/2869/1250 +f 2656/2889/1251 2690/2916/1251 2689/2905/1251 2654/2887/1251 +f 2612/2845/1252 2668/2917/1252 2667/2907/1252 2610/2843/1252 +f 2630/2863/1253 2677/2918/1253 2676/2909/1253 2628/2861/1253 +f 2648/2881/1254 2686/2919/1254 2685/2910/1254 2646/2879/1254 +f 2604/2837/1631 2664/2920/1631 2663/2912/1631 2602/2835/1631 +f 2622/2855/1256 2673/2921/1256 2672/2914/1256 2620/2853/1256 +f 2640/2873/1632 2682/2922/1632 2681/2915/1632 2638/2871/1632 +f 2658/2891/1633 2691/2923/1633 2690/2916/1633 2656/2889/1633 +f 2614/2847/1259 2669/2924/1259 2668/2917/1259 2612/2845/1259 +f 2632/2865/1260 2678/2925/1260 2677/2918/1260 2630/2863/1260 +f 2650/2883/1261 2687/2926/1261 2686/2919/1261 2648/2881/1261 +f 2606/2839/1262 2665/2927/1262 2664/2920/1262 2604/2837/1262 +f 2624/2857/1263 2674/2902/1263 2673/2921/1263 2622/2855/1263 +f 2642/2875/1264 2683/2928/1264 2682/2922/1264 2640/2873/1264 +f 2660/2895/1265 2692/2929/1265 2691/2923/1265 2658/2891/1265 +f 2616/2849/1266 2670/2893/1266 2669/2924/1266 2614/2847/1266 +f 2634/2867/1267 2679/2904/1267 2678/2925/1267 2632/2865/1267 +f 2652/2885/1268 2688/2906/1268 2687/2926/1268 2650/2883/1268 +f 2608/2841/1269 2666/2908/1269 2665/2927/1269 2606/2839/1269 +f 2626/2859/1270 2675/2900/1270 2674/2902/1270 2624/2857/1270 +f 2644/2877/1271 2684/2911/1271 2683/2928/1271 2642/2875/1271 +f 2600/2832/1272 2661/2913/1272 2662/2930/1272 2598/2833/1272 +f 2598/2897/1273 2662/2931/1273 2692/2929/1273 2660/2895/1273 +f 2847/2932/1634 2695/2933/1634 2694/2934/1634 2849/2935/1634 +f 2661/2913/1025 2693/2936/1025 2662/2930/1025 +f 2689/2905/1038 2693/2937/1038 2688/2906/1038 +f 2676/2909/1023 2693/2938/1023 2675/2900/1023 +f 2663/2912/1022 2693/2939/1022 2661/2913/1022 +f 2690/2916/1036 2693/2940/1036 2689/2905/1036 +f 2677/2918/1020 2693/2941/1020 2676/2909/1020 +f 2664/2920/987 2693/2942/987 2663/2912/987 +f 2691/2923/1034 2693/2943/1034 2690/2916/1034 +f 2678/2925/1033 2693/2944/1033 2677/2918/1033 +f 2665/2927/1049 2693/2945/1049 2664/2920/1049 +f 2692/2929/1031 2693/2946/1031 2691/2923/1031 +f 2679/2904/1030 2693/2947/1030 2678/2925/1030 +f 2666/2908/1047 2693/2948/1047 2665/2927/1047 +f 2662/2931/1028 2693/2949/1028 2692/2929/1028 +f 2680/2903/1027 2693/2950/1027 2679/2904/1027 +f 2667/2907/1045 2693/2951/1045 2666/2908/1045 +f 2681/2915/1024 2693/2952/1024 2680/2903/1024 +f 2668/2917/1043 2693/2953/1043 2667/2907/1043 +f 2682/2922/1021 2693/2954/1021 2681/2915/1021 +f 2669/2924/1041 2693/2955/1041 2668/2917/1041 +f 2683/2928/1050 2693/2956/1050 2682/2922/1050 +f 2670/2893/1039 2693/2957/1039 2669/2924/1039 +f 2684/2911/1048 2693/2958/1048 2683/2928/1048 +f 2671/2892/1037 2693/2959/1037 2670/2893/1037 +f 2685/2910/1046 2693/2960/1046 2684/2911/1046 +f 2672/2914/1035 2693/2961/1035 2671/2892/1035 +f 2686/2919/1044 2693/2962/1044 2685/2910/1044 +f 2673/2921/1032 2693/2963/1032 2672/2914/1032 +f 2687/2926/1042 2693/2964/1042 2686/2919/1042 +f 2674/2902/1029 2693/2965/1029 2673/2921/1029 +f 2688/2906/1040 2693/2966/1040 2687/2926/1040 +f 2789/2967/1635 2725/2968/1635 2756/2969/1635 2792/2970/1635 +f 2625/2858/566 2739/2971/566 2740/2972/566 2627/2860/566 +f 2643/2876/566 2748/2973/566 2749/2974/566 2645/2878/566 +f 2599/2831/566 2726/2975/566 2727/2976/566 2601/2834/566 +f 2617/2850/566 2735/2977/566 2736/2978/566 2619/2852/566 +f 2635/2868/566 2744/2979/566 2745/2980/566 2637/2870/566 +f 2653/2886/566 2753/2981/566 2754/2982/566 2655/2888/566 +f 2609/2842/566 2731/2899/566 2732/2983/566 2611/2844/566 +f 2627/2860/566 2740/2972/566 2741/2984/566 2629/2862/566 +f 2645/2878/566 2749/2974/566 2750/2985/566 2647/2880/566 +f 2601/2834/566 2727/2976/566 2728/2986/566 2603/2836/566 +f 2619/2852/566 2736/2978/566 2737/2987/566 2621/2854/566 +f 2637/2870/566 2745/2980/566 2746/2988/566 2639/2872/566 +f 2655/2888/566 2754/2982/566 2755/2989/566 2657/2890/566 +f 2611/2844/566 2732/2983/566 2733/2990/566 2613/2846/566 +f 2629/2862/566 2741/2984/566 2742/2991/566 2631/2864/566 +f 2647/2880/566 2750/2985/566 2751/2992/566 2649/2882/566 +f 2603/2836/566 2728/2986/566 2729/2993/566 2605/2838/566 +f 2621/2854/566 2737/2987/566 2738/2994/566 2623/2856/566 +f 2639/2872/566 2746/2988/566 2747/2995/566 2641/2874/566 +f 2657/2890/566 2755/2989/566 2756/2969/566 2659/2894/566 +f 2613/2846/566 2733/2990/566 2734/2996/566 2615/2848/566 +f 2631/2864/566 2742/2991/566 2743/2997/566 2633/2866/566 +f 2649/2882/566 2751/2992/566 2752/2998/566 2651/2884/566 +f 2605/2838/566 2729/2993/566 2730/2898/566 2607/2840/566 +f 2623/2856/566 2738/2994/566 2739/2971/566 2625/2858/566 +f 2641/2874/566 2747/2995/566 2748/2973/566 2643/2876/566 +f 2597/2830/566 2725/2999/566 2726/2975/566 2599/2831/566 +f 2659/2894/566 2756/2969/566 2725/2968/566 2597/2896/566 +f 2615/2848/566 2734/2996/566 2735/2977/566 2617/2850/566 +f 2633/2866/566 2743/2997/566 2744/2979/566 2635/2868/566 +f 2651/2884/566 2752/2998/566 2753/2981/566 2653/2886/566 +f 2769/3000/1636 2898/3001/1636 2899/3002/1636 2770/3003/1636 +f 2792/2970/1637 2756/2969/1637 2755/2989/1637 2794/3004/1637 +f 2794/3004/1638 2755/2989/1638 2754/2982/1638 2796/3005/1638 +f 2796/3005/1639 2754/2982/1639 2753/2981/1639 2798/3006/1639 +f 2798/3006/1640 2753/2981/1640 2752/2998/1640 2800/3007/1640 +f 2800/3007/1641 2752/2998/1641 2751/2992/1641 2802/3008/1641 +f 2802/3008/1642 2751/2992/1642 2750/2985/1642 2804/3009/1642 +f 2804/3009/1643 2750/2985/1643 2749/2974/1643 2806/3010/1643 +f 2806/3010/1644 2749/2974/1644 2748/2973/1644 2808/3011/1644 +f 2808/3011/1645 2748/2973/1645 2747/2995/1645 2810/3012/1645 +f 2810/3012/1646 2747/2995/1646 2746/2988/1646 2812/3013/1646 +f 2812/3013/1647 2746/2988/1647 2745/2980/1647 2814/3014/1647 +f 2814/3014/1648 2745/2980/1648 2744/2979/1648 2816/3015/1648 +f 2816/3015/1649 2744/2979/1649 2743/2997/1649 2818/3016/1649 +f 2818/3016/1650 2743/2997/1650 2742/2991/1650 2820/3017/1650 +f 2820/3017/1651 2742/2991/1651 2741/2984/1651 2822/3018/1651 +f 2822/3018/1652 2741/2984/1652 2740/2972/1652 2824/3019/1652 +f 2824/3019/1653 2740/2972/1653 2739/2971/1653 2826/3020/1653 +f 2826/3020/1654 2739/2971/1654 2738/2994/1654 2828/3021/1654 +f 2828/3021/1655 2738/2994/1655 2737/2987/1655 2830/3022/1655 +f 2830/3022/1656 2737/2987/1656 2736/2978/1656 2832/3023/1656 +f 2832/3023/1657 2736/2978/1657 2735/2977/1657 2834/3024/1657 +f 2834/3024/1658 2735/2977/1658 2734/2996/1658 2836/3025/1658 +f 2836/3025/1659 2734/2996/1659 2733/2990/1659 2838/3026/1659 +f 2838/3026/1660 2733/2990/1660 2732/2983/1660 2840/3027/1660 +f 2840/3027/1661 2732/2983/1661 2731/2899/1661 2842/3028/1661 +f 2842/3028/1662 2731/2899/1662 2730/2898/1662 2844/3029/1662 +f 2844/3029/1663 2730/2898/1663 2729/2993/1663 2846/3030/1663 +f 2846/3030/1664 2729/2993/1664 2728/2986/1664 2848/3031/1664 +f 2848/3031/1665 2728/2986/1665 2727/2976/1665 2850/3032/1665 +f 2850/3032/1666 2727/2976/1666 2726/2975/1666 2852/3033/1666 +f 2852/3033/1667 2726/2975/1667 2725/2999/1667 2789/3034/1667 +f 2885/3035/1668 2851/3036/1668 2790/3037/1668 2854/3038/1668 +f 2853/3039/1669 2852/3033/1669 2789/3034/1669 2724/3040/1669 +f 2884/3041/1670 2849/2935/1670 2851/3036/1670 2885/3035/1670 +f 2694/2934/1671 2850/3032/1671 2852/3033/1671 2853/3039/1671 +f 2883/3042/1672 2847/2932/1672 2849/2935/1672 2884/3041/1672 +f 2695/2933/1673 2848/3031/1673 2850/3032/1673 2694/2934/1673 +f 2882/3043/1674 2845/3044/1674 2847/2932/1674 2883/3042/1674 +f 2696/3045/1675 2846/3030/1675 2848/3031/1675 2695/2933/1675 +f 2881/3046/1676 2843/3047/1676 2845/3044/1676 2882/3043/1676 +f 2697/3048/1677 2844/3029/1677 2846/3030/1677 2696/3045/1677 +f 2880/3049/1678 2841/3050/1678 2843/3047/1678 2881/3046/1678 +f 2698/3051/1679 2842/3028/1679 2844/3029/1679 2697/3048/1679 +f 2879/3052/1680 2839/3053/1680 2841/3050/1680 2880/3049/1680 +f 2699/3054/1681 2840/3027/1681 2842/3028/1681 2698/3051/1681 +f 2878/3055/1682 2837/3056/1682 2839/3053/1682 2879/3052/1682 +f 2700/3057/1683 2838/3026/1683 2840/3027/1683 2699/3054/1683 +f 2877/3058/1684 2835/3059/1684 2837/3056/1684 2878/3055/1684 +f 2701/3060/1685 2836/3025/1685 2838/3026/1685 2700/3057/1685 +f 2876/3061/1686 2833/3062/1686 2835/3059/1686 2877/3058/1686 +f 2702/3063/1687 2834/3024/1687 2836/3025/1687 2701/3060/1687 +f 2875/3064/1688 2831/3065/1688 2833/3062/1688 2876/3061/1688 +f 2703/3066/1689 2832/3023/1689 2834/3024/1689 2702/3063/1689 +f 2874/3067/1690 2829/3068/1690 2831/3065/1690 2875/3064/1690 +f 2704/3069/1691 2830/3022/1691 2832/3023/1691 2703/3066/1691 +f 2873/3070/1692 2827/3071/1692 2829/3068/1692 2874/3067/1692 +f 2705/3072/1693 2828/3021/1693 2830/3022/1693 2704/3069/1693 +f 2872/3073/1694 2825/3074/1694 2827/3071/1694 2873/3070/1694 +f 2706/3075/1695 2826/3020/1695 2828/3021/1695 2705/3072/1695 +f 2871/3076/1696 2823/3077/1696 2825/3074/1696 2872/3073/1696 +f 2707/3078/1697 2824/3019/1697 2826/3020/1697 2706/3075/1697 +f 2870/3079/1698 2821/3080/1698 2823/3077/1698 2871/3076/1698 +f 2708/3081/1699 2822/3018/1699 2824/3019/1699 2707/3078/1699 +f 2869/3082/1700 2819/3083/1700 2821/3080/1700 2870/3079/1700 +f 2709/3084/1701 2820/3017/1701 2822/3018/1701 2708/3081/1701 +f 2868/3085/1702 2817/3086/1702 2819/3083/1702 2869/3082/1702 +f 2710/3087/1703 2818/3016/1703 2820/3017/1703 2709/3084/1703 +f 2867/3088/1704 2815/3089/1704 2817/3086/1704 2868/3085/1704 +f 2711/3090/1705 2816/3015/1705 2818/3016/1705 2710/3087/1705 +f 2866/3091/1706 2813/3092/1706 2815/3089/1706 2867/3088/1706 +f 2712/3093/1707 2814/3014/1707 2816/3015/1707 2711/3090/1707 +f 2865/3094/1708 2811/3095/1708 2813/3092/1708 2866/3091/1708 +f 2713/3096/1709 2812/3013/1709 2814/3014/1709 2712/3093/1709 +f 2864/3097/1710 2809/3098/1710 2811/3095/1710 2865/3094/1710 +f 2714/3099/1711 2810/3012/1711 2812/3013/1711 2713/3096/1711 +f 2863/3100/1712 2807/3101/1712 2809/3098/1712 2864/3097/1712 +f 2715/3102/1713 2808/3011/1713 2810/3012/1713 2714/3099/1713 +f 2862/3103/1714 2805/3104/1714 2807/3101/1714 2863/3100/1714 +f 2716/3105/1715 2806/3010/1715 2808/3011/1715 2715/3102/1715 +f 2861/3106/1716 2803/3107/1716 2805/3104/1716 2862/3103/1716 +f 2717/3108/1717 2804/3009/1717 2806/3010/1717 2716/3105/1717 +f 2860/3109/1718 2801/3110/1718 2803/3107/1718 2861/3106/1718 +f 2718/3111/1719 2802/3008/1719 2804/3009/1719 2717/3108/1719 +f 2859/3112/1720 2799/3113/1720 2801/3110/1720 2860/3109/1720 +f 2719/3114/1721 2800/3007/1721 2802/3008/1721 2718/3111/1721 +f 2858/3115/1722 2797/3116/1722 2799/3113/1722 2859/3112/1722 +f 2720/3117/1723 2798/3006/1723 2800/3007/1723 2719/3114/1723 +f 2857/3118/1724 2795/3119/1724 2797/3116/1724 2858/3115/1724 +f 2721/3120/1725 2796/3005/1725 2798/3006/1725 2720/3117/1725 +f 2856/3121/1726 2793/3122/1726 2795/3119/1726 2857/3118/1726 +f 2722/3123/1727 2794/3004/1727 2796/3005/1727 2721/3120/1727 +f 2855/3124/1728 2791/3125/1728 2793/3122/1728 2856/3121/1728 +f 2723/3126/1729 2792/2970/1729 2794/3004/1729 2722/3123/1729 +f 2854/3127/1730 2790/3128/1730 2791/3125/1730 2855/3124/1730 +f 2724/3129/1731 2789/2967/1731 2792/2970/1731 2723/3126/1731 +f 2845/3044/1732 2696/3045/1732 2695/2933/1732 2847/2932/1732 +f 2843/3047/1733 2697/3048/1733 2696/3045/1733 2845/3044/1733 +f 2841/3050/1734 2698/3051/1734 2697/3048/1734 2843/3047/1734 +f 2839/3053/1735 2699/3054/1735 2698/3051/1735 2841/3050/1735 +f 2837/3056/1736 2700/3057/1736 2699/3054/1736 2839/3053/1736 +f 2835/3059/1737 2701/3060/1737 2700/3057/1737 2837/3056/1737 +f 2833/3062/1738 2702/3063/1738 2701/3060/1738 2835/3059/1738 +f 2831/3065/1739 2703/3066/1739 2702/3063/1739 2833/3062/1739 +f 2829/3068/1740 2704/3069/1740 2703/3066/1740 2831/3065/1740 +f 2827/3071/1741 2705/3072/1741 2704/3069/1741 2829/3068/1741 +f 2825/3074/1742 2706/3075/1742 2705/3072/1742 2827/3071/1742 +f 2823/3077/1743 2707/3078/1743 2706/3075/1743 2825/3074/1743 +f 2821/3080/1744 2708/3081/1744 2707/3078/1744 2823/3077/1744 +f 2819/3083/1745 2709/3084/1745 2708/3081/1745 2821/3080/1745 +f 2817/3086/1746 2710/3087/1746 2709/3084/1746 2819/3083/1746 +f 2815/3089/1747 2711/3090/1747 2710/3087/1747 2817/3086/1747 +f 2813/3092/1748 2712/3093/1748 2711/3090/1748 2815/3089/1748 +f 2811/3095/1749 2713/3096/1749 2712/3093/1749 2813/3092/1749 +f 2809/3098/1750 2714/3099/1750 2713/3096/1750 2811/3095/1750 +f 2807/3101/1751 2715/3102/1751 2714/3099/1751 2809/3098/1751 +f 2805/3104/1752 2716/3105/1752 2715/3102/1752 2807/3101/1752 +f 2803/3107/1753 2717/3108/1753 2716/3105/1753 2805/3104/1753 +f 2801/3110/1754 2718/3111/1754 2717/3108/1754 2803/3107/1754 +f 2799/3113/1755 2719/3114/1755 2718/3111/1755 2801/3110/1755 +f 2797/3116/1756 2720/3117/1756 2719/3114/1756 2799/3113/1756 +f 2795/3119/1757 2721/3120/1757 2720/3117/1757 2797/3116/1757 +f 2793/3122/1758 2722/3123/1758 2721/3120/1758 2795/3119/1758 +f 2791/3125/1759 2723/3126/1759 2722/3123/1759 2793/3122/1759 +f 2790/3128/1760 2724/3129/1760 2723/3126/1760 2791/3125/1760 +f 2849/2935/1761 2694/2934/1761 2853/3039/1761 2851/3036/1761 +f 2851/3036/1762 2853/3039/1762 2724/3040/1762 2790/3037/1762 +f 2757/3130/1763 2854/3127/1763 2855/3124/1763 2788/3131/1763 +f 2788/3131/1764 2855/3124/1764 2856/3121/1764 2787/3132/1764 +f 2787/3132/1765 2856/3121/1765 2857/3118/1765 2786/3133/1765 +f 2786/3133/1766 2857/3118/1766 2858/3115/1766 2785/3134/1766 +f 2785/3134/1767 2858/3115/1767 2859/3112/1767 2784/3135/1767 +f 2784/3135/1768 2859/3112/1768 2860/3109/1768 2783/3136/1768 +f 2783/3136/1769 2860/3109/1769 2861/3106/1769 2782/3137/1769 +f 2782/3137/1770 2861/3106/1770 2862/3103/1770 2781/3138/1770 +f 2781/3138/1771 2862/3103/1771 2863/3100/1771 2780/3139/1771 +f 2780/3139/1772 2863/3100/1772 2864/3097/1772 2779/3140/1772 +f 2779/3140/1773 2864/3097/1773 2865/3094/1773 2778/3141/1773 +f 2778/3141/1774 2865/3094/1774 2866/3091/1774 2777/3142/1774 +f 2777/3142/1775 2866/3091/1775 2867/3088/1775 2776/3143/1775 +f 2776/3143/1776 2867/3088/1776 2868/3085/1776 2775/3144/1776 +f 2775/3144/1777 2868/3085/1777 2869/3082/1777 2774/3145/1777 +f 2774/3145/1778 2869/3082/1778 2870/3079/1778 2773/3146/1778 +f 2773/3146/1779 2870/3079/1779 2871/3076/1779 2772/3147/1779 +f 2772/3147/1780 2871/3076/1780 2872/3073/1780 2771/3148/1780 +f 2771/3148/1781 2872/3073/1781 2873/3070/1781 2770/3003/1781 +f 2770/3003/1782 2873/3070/1782 2874/3067/1782 2769/3000/1782 +f 2769/3000/1783 2874/3067/1783 2875/3064/1783 2768/3149/1783 +f 2768/3149/1784 2875/3064/1784 2876/3061/1784 2767/3150/1784 +f 2767/3150/1785 2876/3061/1785 2877/3058/1785 2766/3151/1785 +f 2766/3151/1786 2877/3058/1786 2878/3055/1786 2765/3152/1786 +f 2765/3152/1787 2878/3055/1787 2879/3052/1787 2764/3153/1787 +f 2764/3153/1788 2879/3052/1788 2880/3049/1788 2763/3154/1788 +f 2763/3154/1789 2880/3049/1789 2881/3046/1789 2762/3155/1789 +f 2762/3155/1790 2881/3046/1790 2882/3043/1790 2761/3156/1790 +f 2761/3156/1791 2882/3043/1791 2883/3042/1791 2760/3157/1791 +f 2760/3157/1792 2883/3042/1792 2884/3041/1792 2759/3158/1792 +f 2759/3158/1793 2884/3041/1793 2885/3035/1793 2758/3159/1793 +f 2758/3159/1794 2885/3035/1794 2854/3038/1794 2757/3130/1794 +f 2886/3160/1278 2917/3161/1278 2916/3162/1278 2915/3163/1278 2914/3164/1278 2913/3165/1278 2912/3166/1278 2911/3167/1278 2910/3168/1278 2909/3169/1278 2908/3170/1278 2907/3171/1278 2906/3172/1278 2905/3173/1278 2904/3174/1278 2903/3175/1278 2902/3176/1278 2901/3177/1278 2900/3178/1278 2899/3002/1278 2898/3001/1278 2897/3179/1278 2896/3180/1278 2895/3181/1278 2894/3182/1278 2893/3183/1278 2892/3184/1278 2891/3185/1278 2890/3186/1278 2889/3187/1278 2888/3188/1278 2887/3189/1278 +f 2783/3136/1795 2912/3166/1795 2913/3165/1795 2784/3135/1795 +f 2770/3003/1796 2899/3002/1796 2900/3178/1796 2771/3148/1796 +f 2757/3130/1797 2886/3160/1797 2887/3189/1797 2758/3159/1797 +f 2784/3135/1798 2913/3165/1798 2914/3164/1798 2785/3134/1798 +f 2771/3148/1799 2900/3178/1799 2901/3177/1799 2772/3147/1799 +f 2758/3159/1800 2887/3189/1800 2888/3188/1800 2759/3158/1800 +f 2785/3134/1801 2914/3164/1801 2915/3163/1801 2786/3133/1801 +f 2772/3147/1802 2901/3177/1802 2902/3176/1802 2773/3146/1802 +f 2759/3158/1803 2888/3188/1803 2889/3187/1803 2760/3157/1803 +f 2786/3133/1804 2915/3163/1804 2916/3162/1804 2787/3132/1804 +f 2773/3146/1805 2902/3176/1805 2903/3175/1805 2774/3145/1805 +f 2760/3157/1806 2889/3187/1806 2890/3186/1806 2761/3156/1806 +f 2787/3132/1807 2916/3162/1807 2917/3161/1807 2788/3131/1807 +f 2774/3145/1808 2903/3175/1808 2904/3174/1808 2775/3144/1808 +f 2761/3156/1809 2890/3186/1809 2891/3185/1809 2762/3155/1809 +f 2788/3131/1810 2917/3161/1810 2886/3160/1810 2757/3130/1810 +f 2775/3144/1811 2904/3174/1811 2905/3173/1811 2776/3143/1811 +f 2762/3155/1812 2891/3185/1812 2892/3184/1812 2763/3154/1812 +f 2776/3143/1813 2905/3173/1813 2906/3172/1813 2777/3142/1813 +f 2763/3154/1814 2892/3184/1814 2893/3183/1814 2764/3153/1814 +f 2777/3142/1815 2906/3172/1815 2907/3171/1815 2778/3141/1815 +f 2764/3153/1816 2893/3183/1816 2894/3182/1816 2765/3152/1816 +f 2778/3141/1817 2907/3171/1817 2908/3170/1817 2779/3140/1817 +f 2765/3152/1818 2894/3182/1818 2895/3181/1818 2766/3151/1818 +f 2779/3140/1819 2908/3170/1819 2909/3169/1819 2780/3139/1819 +f 2766/3151/1820 2895/3181/1820 2896/3180/1820 2767/3150/1820 +f 2780/3139/1821 2909/3169/1821 2910/3168/1821 2781/3138/1821 +f 2767/3150/1822 2896/3180/1822 2897/3179/1822 2768/3149/1822 +f 2781/3138/1823 2910/3168/1823 2911/3167/1823 2782/3137/1823 +f 2768/3149/1824 2897/3179/1824 2898/3001/1824 2769/3000/1824 +f 2782/3137/1825 2911/3167/1825 2912/3166/1825 2783/3136/1825 diff --git a/mods/ITEMS/mcl_tridents/textures/mcl_trident_inv.png b/mods/ITEMS/mcl_tridents/textures/mcl_trident_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..5b4d4290ac0b1f5b09d2b828ddecbadeeebad46c GIT binary patch literal 299 zcmV+`0o4A9P)=lw@d3P9q*ATH>?l#~?1vpaXe226GIfyX#30C9!^ z$mt-P!J5}>$LmTANm4XpxPVm6C#Sj x`pajA^XJbI3@~gNkC7q76P#QLg*L8S3jmhZjuFAKs~-RW002ovPDHLkV1nPre&zrG literal 0 HcmV?d00001 From 6747a199ae18d7312a1ca0701158062e69ffcd22 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 13 Dec 2021 02:09:03 +0400 Subject: [PATCH 250/271] Set minimum light level to 1 for all nodes by adopting ambience_light mod - much more MC-like --- mods/ENVIRONMENT/mcl_ambient_light/README.txt | 7 +++++++ mods/ENVIRONMENT/mcl_ambient_light/init.lua | 10 ++++++++++ mods/ENVIRONMENT/mcl_ambient_light/mod.conf | 2 ++ settingtypes.txt | 7 +++++++ 4 files changed, 26 insertions(+) create mode 100644 mods/ENVIRONMENT/mcl_ambient_light/README.txt create mode 100644 mods/ENVIRONMENT/mcl_ambient_light/init.lua create mode 100644 mods/ENVIRONMENT/mcl_ambient_light/mod.conf diff --git a/mods/ENVIRONMENT/mcl_ambient_light/README.txt b/mods/ENVIRONMENT/mcl_ambient_light/README.txt new file mode 100644 index 000000000..866e619dc --- /dev/null +++ b/mods/ENVIRONMENT/mcl_ambient_light/README.txt @@ -0,0 +1,7 @@ +ambient_light by MikeRedwood +============================ +Makes all nodes lit to a small degree! + +License of source code: +----------------------- +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 diff --git a/mods/ENVIRONMENT/mcl_ambient_light/init.lua b/mods/ENVIRONMENT/mcl_ambient_light/init.lua new file mode 100644 index 000000000..cf1a99e06 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_ambient_light/init.lua @@ -0,0 +1,10 @@ +local light_min = tonumber(minetest.settings:get("light_min")) or 1 + +minetest.register_on_mods_loaded(function () + for i, def in pairs(minetest.registered_nodes) do + local light_source = def.light_source + if light_source == nil or light_source < light_min then + minetest.override_item(i, { light_source = light_min }) + end + end +end) diff --git a/mods/ENVIRONMENT/mcl_ambient_light/mod.conf b/mods/ENVIRONMENT/mcl_ambient_light/mod.conf new file mode 100644 index 000000000..5b2859ae9 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_ambient_light/mod.conf @@ -0,0 +1,2 @@ +name = ambient_light +description = Makes all nodes lit to a small degree! diff --git a/settingtypes.txt b/settingtypes.txt index 344afa50a..1c406f7e7 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -157,6 +157,13 @@ fix_doubleplants (Mcimport double plant fixes) bool true # Allow players to create Minecraft-like maps. enable_real_maps (Enable Real Maps) bool true +# Minimum emissive light level below which the block is made to emit said light level. Defaults to 1 (looks like in MC). +# WARNING! You may have to run fixlight on loaded areas after you remove it or change the light level. +# Will work on all blocks including under ground. +# For debugging mods or exploring underground worlds in creative mod author recommends 9. +# Min 0 and Max 14. +light_min (Minimum light level) int 1 + [Debugging] # If enabled, this will show the itemstring of an item in the description. mcl_item_id_debug (Item ID Debug) bool false \ No newline at end of file From 3a402c80548dde969dee55c7a35d9af25252631a Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 15 Dec 2021 04:20:34 +0400 Subject: [PATCH 251/271] Fix minor ambient light issues --- mods/ENVIRONMENT/mcl_ambient_light/README.txt | 7 ------- mods/ENVIRONMENT/mcl_ambient_light/init.lua | 19 +++++++++---------- mods/ENVIRONMENT/mcl_ambient_light/mod.conf | 5 +++-- settingtypes.txt | 7 ------- 4 files changed, 12 insertions(+), 26 deletions(-) delete mode 100644 mods/ENVIRONMENT/mcl_ambient_light/README.txt diff --git a/mods/ENVIRONMENT/mcl_ambient_light/README.txt b/mods/ENVIRONMENT/mcl_ambient_light/README.txt deleted file mode 100644 index 866e619dc..000000000 --- a/mods/ENVIRONMENT/mcl_ambient_light/README.txt +++ /dev/null @@ -1,7 +0,0 @@ -ambient_light by MikeRedwood -============================ -Makes all nodes lit to a small degree! - -License of source code: ------------------------ -GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 diff --git a/mods/ENVIRONMENT/mcl_ambient_light/init.lua b/mods/ENVIRONMENT/mcl_ambient_light/init.lua index cf1a99e06..34b2d5238 100644 --- a/mods/ENVIRONMENT/mcl_ambient_light/init.lua +++ b/mods/ENVIRONMENT/mcl_ambient_light/init.lua @@ -1,10 +1,9 @@ -local light_min = tonumber(minetest.settings:get("light_min")) or 1 - -minetest.register_on_mods_loaded(function () - for i, def in pairs(minetest.registered_nodes) do - local light_source = def.light_source - if light_source == nil or light_source < light_min then - minetest.override_item(i, { light_source = light_min }) - end - end -end) +minetest.register_on_mods_loaded(function () + local light_min = 1 + for i, def in pairs(minetest.registered_nodes) do + local light_source = def.light_source + if light_source == nil or light_source < light_min then + minetest.override_item(i, { light_source = light_min }) + end + end +end) diff --git a/mods/ENVIRONMENT/mcl_ambient_light/mod.conf b/mods/ENVIRONMENT/mcl_ambient_light/mod.conf index 5b2859ae9..f5e77b563 100644 --- a/mods/ENVIRONMENT/mcl_ambient_light/mod.conf +++ b/mods/ENVIRONMENT/mcl_ambient_light/mod.conf @@ -1,2 +1,3 @@ -name = ambient_light -description = Makes all nodes lit to a small degree! +name = ambient_light +author = MikeRedwood +description = Makes all nodes lit to a small degree! diff --git a/settingtypes.txt b/settingtypes.txt index 1c406f7e7..344afa50a 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -157,13 +157,6 @@ fix_doubleplants (Mcimport double plant fixes) bool true # Allow players to create Minecraft-like maps. enable_real_maps (Enable Real Maps) bool true -# Minimum emissive light level below which the block is made to emit said light level. Defaults to 1 (looks like in MC). -# WARNING! You may have to run fixlight on loaded areas after you remove it or change the light level. -# Will work on all blocks including under ground. -# For debugging mods or exploring underground worlds in creative mod author recommends 9. -# Min 0 and Max 14. -light_min (Minimum light level) int 1 - [Debugging] # If enabled, this will show the itemstring of an item in the description. mcl_item_id_debug (Item ID Debug) bool false \ No newline at end of file From 59fa6a91e92959c2ad1ba370af3338d2f84139a3 Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 15 Dec 2021 04:23:11 +0400 Subject: [PATCH 252/271] Fix light_source level 1 --- mods/ENVIRONMENT/mcl_ambient_light/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ENVIRONMENT/mcl_ambient_light/init.lua b/mods/ENVIRONMENT/mcl_ambient_light/init.lua index 34b2d5238..11a11d4bc 100644 --- a/mods/ENVIRONMENT/mcl_ambient_light/init.lua +++ b/mods/ENVIRONMENT/mcl_ambient_light/init.lua @@ -4,6 +4,8 @@ minetest.register_on_mods_loaded(function () local light_source = def.light_source if light_source == nil or light_source < light_min then minetest.override_item(i, { light_source = light_min }) + elseif light_source == light_min then + minetest.override_item(i, { light_source = light_min + 1 }) end end end) From cce6b9f6e2ddf0c7569aaa2bba0ff31f2011a5a2 Mon Sep 17 00:00:00 2001 From: cora Date: Sat, 25 Sep 2021 02:06:39 +0200 Subject: [PATCH 253/271] Merge imporved Nether dust by cora --- mods/ENVIRONMENT/mcl_weather/nether_dust.lua | 86 +++++++++++++------- 1 file changed, 58 insertions(+), 28 deletions(-) diff --git a/mods/ENVIRONMENT/mcl_weather/nether_dust.lua b/mods/ENVIRONMENT/mcl_weather/nether_dust.lua index d328dae21..488745eec 100644 --- a/mods/ENVIRONMENT/mcl_weather/nether_dust.lua +++ b/mods/ENVIRONMENT/mcl_weather/nether_dust.lua @@ -1,36 +1,66 @@ mcl_weather.nether_dust = {} -mcl_weather.nether_dust.particles_count = 99 +mcl_weather.nether_dust.particlespawners = {} --- calculates coordinates and draw particles for Nether dust -function mcl_weather.nether_dust.add_dust_particles(player) - for i=mcl_weather.nether_dust.particles_count, 1,-1 do - local rpx, rpy, rpz = mcl_weather.get_random_pos_by_player_look_dir(player) - minetest.add_particle({ - pos = {x = rpx, y = rpy - math.random(6, 18), z = rpz}, - velocity = {x = math.random(-30,30)*0.01, y = math.random(-15,15)*0.01, z = math.random(-30,30)*0.01}, - acceleration = {x = math.random(-50,50)*0.02, y = math.random(-20,20)*0.02, z = math.random(-50,50)*0.02}, - expirationtime = 3, - size = math.random(6,20)*0.01, - collisiondetection = false, - object_collision = false, - vertical = false, - glow = math.random(0,minetest.LIGHT_MAX), - texture = "mcl_particles_nether_dust"..tostring(i%3+1)..".png", - playername = player:get_player_name() - }) +local psdef= { + amount = 150, + time = 0, + minpos = vector.new(-15,-15,-15), + maxpos =vector.new(15,15,15), + minvel = vector.new(-0.3,-0.15,-1), + maxvel = vector.new(0.3,0.15,0.3), + minacc = vector.new(-1,-0.4,-1), + maxacc = vector.new(1,0.4,1), + minexptime = 1, + maxexptime = 10, + minsize = 0.2, + maxsize = 0.7, + collisiondetection = false, + collision_removal = false, + object_collision = false, + vertical = false +} + +local function check_player(player) + local name=player:get_player_name(name) + if mcl_worlds.has_dust(player:get_pos()) and not mcl_weather.nether_dust.particlespawners[name] then + return true + end +end + +mcl_weather.nether_dust.add_particlespawners = function(player) + local name=player:get_player_name(name) + mcl_weather.nether_dust.particlespawners[name]={} + psdef.playername = name + psdef.attached = player + psdef.glow = math.random(0,minetest.LIGHT_MAX) + for i=1,3 do + psdef.texture="mcl_particles_nether_dust"..i..".png" + mcl_weather.nether_dust.particlespawners[name][i]=minetest.add_particlespawner(psdef) end end -local timer = 0 -minetest.register_globalstep(function(dtime) - timer = timer + dtime - if timer < 0.7 then return end - timer = 0 - - for _, player in pairs(minetest.get_connected_players()) do - if not mcl_worlds.has_dust(player:get_pos()) then - return false +mcl_weather.nether_dust.delete_particlespawners = function(player) + local name=player:get_player_name(name) + if mcl_weather.nether_dust.particlespawners[name] then + for i=1,3 do + minetest.delete_particlespawner(mcl_weather.nether_dust.particlespawners[name][i]) end - mcl_weather.nether_dust.add_dust_particles(player) + mcl_weather.nether_dust.particlespawners[name]=nil + end +end + +mcl_worlds.register_on_dimension_change(function(player, dimension) + if check_player(player) then + return mcl_weather.nether_dust.add_particlespawners(player) + end + mcl_weather.nether_dust.delete_particlespawners(player) +end) + +minetest.register_on_joinplayer(function(player) + if check_player(player) then + mcl_weather.nether_dust.add_particlespawners(player) end end) +minetest.register_on_leaveplayer(function(player) + mcl_weather.nether_dust.delete_particlespawners(player) +end) \ No newline at end of file From a3fb5c6164d5123eddb7522608c19f412c907b69 Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 16 Dec 2021 05:52:50 +0400 Subject: [PATCH 254/271] Try to disable flights in Survival Mode (Hi Mr_Anderson) --- mods/PLAYER/mcl_anticheat/init.lua | 128 +++++++++++++++++++++++++++++ mods/PLAYER/mcl_anticheat/mod.conf | 3 + 2 files changed, 131 insertions(+) create mode 100644 mods/PLAYER/mcl_anticheat/init.lua create mode 100644 mods/PLAYER/mcl_anticheat/mod.conf diff --git a/mods/PLAYER/mcl_anticheat/init.lua b/mods/PLAYER/mcl_anticheat/init.lua new file mode 100644 index 000000000..ec135f3bc --- /dev/null +++ b/mods/PLAYER/mcl_anticheat/init.lua @@ -0,0 +1,128 @@ +local flights_kick_threshold = 10 + +local after = minetest.after +local get_connected_players = minetest.get_connected_players +local get_node = minetest.get_node +local get_player_by_name = minetest.get_player_by_name +local is_creative_enabled = minetest.is_creative_enabled +local kick_player = minetest.kick_player +local pos_to_string = minetest.pos_to_string + +local ceil = math.ceil +local floor = math.floor + +local window_size = 10 +local detection_interval = 1.7 +local step_seconds = detection_interval / window_size +local joined_players = {} + +local function update_player(player_object) + if not player_object then return end + local name = player_object:get_player_name() + if not name then return end + + local pos = player_object:get_pos() + local x, y, z = floor(pos.x), floor(pos.y-0.1), floor(pos.z) + + if mcl_playerplus.elytra then + local elytra = mcl_playerplus.elytra[player_object] + if elytra and elytra.active then + return + end + end + + local air = get_node({x = x , y = y , z = z }).name == "air" + and get_node({x = x , y = y , z = z + 1}).name == "air" + and get_node({x = x , y = y + 1, z = z }).name == "air" + and get_node({x = x , y = y + 1, z = z + 1}).name == "air" + and get_node({x = x + 1, y = y , z = z }).name == "air" + and get_node({x = x + 1, y = y , z = z + 1}).name == "air" + and get_node({x = x + 1, y = y + 1, z = z }).name == "air" + and get_node({x = x + 1, y = y + 1, z = z + 1}).name == "air" + + local player_data = { + pos = pos, + velocity = player_object:get_velocity(), + air = air + } + + if joined_players[name] then + local window_offset = (joined_players[name].window_offset + 1) % window_size + joined_players[name].window_offset = window_offset + joined_players[name][window_offset] = player_data + else + joined_players[name] = { + window_offset = 0, + [0] = player_data, + } + end +end + +local function check_player(name) + if is_creative_enabled(name) then return end + local data = joined_players[name] + if not data then return end + if not data[0] then return end + + local always_air = true + local falling = data[0].velocity.y < 0 + for i = 0, window_size - 1 do + local derivative = data[i] + local not_enough_data = not derivative + if not_enough_data then + return + end + always_air = always_air and derivative.air + falling = falling or derivative.velocity.y < 0 + end + if always_air and not falling then + -- fly detected + if not data.flights then + data.flights = 1 + else + data.flights = data.flights + 1 + if data.flights >= flights_kick_threshold then + kick_player(name, "flights") + end + end + local obj_player = minetest.get_player_by_name(name) + if not obj_player then + kick_player(name, "flights") + end + local velocity = obj_player:get_velocity() + local pos = obj_player:get_pos() + local x, y, z = floor(pos.x), floor(pos.y), floor(pos.z) + while ( get_node({x = x , y = y, z = z }).name == "air" + and get_node({x = x , y = y, z = z + 1}).name == "air" + and get_node({x = x + 1, y = y, z = z }).name == "air" + and get_node({x = x + 1, y = y, z = z + 1}).name == "air" + ) do + y = y - 1 + end + obj_player:set_velocity({x = velocity.x, y = -10, z = velocity.z}) + obj_player:set_pos({x = x, y = y + 0.5, z = z}) + end +end + +local function remove_player(player_object) + if not player_object then return end + local name = player_object:get_player_name() + if not name then return end + minetest.after(step_seconds, function() + joined_players[name] = nil + end) +end + +local function step() + for _, player in pairs(get_connected_players()) do + update_player(player) + check_player(player:get_player_name()) + end + after(step_seconds, step) +end + +minetest.register_on_joinplayer(update_player) + +minetest.register_on_leaveplayer(remove_player) + +after(step_seconds, step) diff --git a/mods/PLAYER/mcl_anticheat/mod.conf b/mods/PLAYER/mcl_anticheat/mod.conf new file mode 100644 index 000000000..612b2f505 --- /dev/null +++ b/mods/PLAYER/mcl_anticheat/mod.conf @@ -0,0 +1,3 @@ +name = mcl_anticheat +author = kay27 +depends = mcl_playerplus From d547e435bb7306bcc651cae35d978196e177cc9b Mon Sep 17 00:00:00 2001 From: kay27 Date: Thu, 16 Dec 2021 07:09:56 +0400 Subject: [PATCH 255/271] Try to disable suffocating bombs (Hi again Mr_Anderson) --- mods/PLAYER/mcl_anticheat/init.lua | 59 ++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 7 deletions(-) diff --git a/mods/PLAYER/mcl_anticheat/init.lua b/mods/PLAYER/mcl_anticheat/init.lua index ec135f3bc..8c5189023 100644 --- a/mods/PLAYER/mcl_anticheat/init.lua +++ b/mods/PLAYER/mcl_anticheat/init.lua @@ -1,16 +1,20 @@ local flights_kick_threshold = 10 +local suffocations_threshold = 1 -local after = minetest.after -local get_connected_players = minetest.get_connected_players -local get_node = minetest.get_node -local get_player_by_name = minetest.get_player_by_name -local is_creative_enabled = minetest.is_creative_enabled -local kick_player = minetest.kick_player -local pos_to_string = minetest.pos_to_string +local after = minetest.after +local get_connected_players = minetest.get_connected_players +local get_node = minetest.get_node +local get_objects_inside_radius = minetest.get_objects_inside_radius +local get_player_by_name = minetest.get_player_by_name +local is_creative_enabled = minetest.is_creative_enabled +local kick_player = minetest.kick_player +local set_node = minetest.set_node local ceil = math.ceil local floor = math.floor +local distance = vector.distance + local window_size = 10 local detection_interval = 1.7 local step_seconds = detection_interval / window_size @@ -121,6 +125,47 @@ local function step() after(step_seconds, step) end +minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing) + if not oldnode then return end + if not placer then return end + if oldnode.name ~= "air" then return end + if not placer:is_player() then return end + local placer_pos = placer:get_pos() + local placer_distance = distance(pos, placer_pos) + if placer_distance < 13 then return end + local is_choker = false + for _, object in pairs(get_objects_inside_radius(pos, 2)) do + if object and object:is_player() then + local player_head_pos = object:get_pos() + player_head_pos.y = player_head_pos.y + 1.5 + local player_head_distance = distance(pos, player_head_pos) + if player_head_distance < 0.7 then + after(0.05, function() + set_node(pos, oldnode) + end) + is_choker = true + break + end + end + end + if not is_choker then return end + -- cheater choked the player from distance greater than 12: + local name = placer:get_player_name() + local data = joined_players[name] + if not data then + joined_players[name].suffocations = 1 + else + if not data.suffocations then + data.suffocations = 1 + else + data.suffocations = data.suffocations + 1 + if data.suffocations >= suffocations_threshold then + kick_player(name, "choker") + end + end + end +end) + minetest.register_on_joinplayer(update_player) minetest.register_on_leaveplayer(remove_player) From 9d77c22c4f9cc8c5ab23b71e9d6971d8768ebd69 Mon Sep 17 00:00:00 2001 From: kay27 Date: Fri, 17 Dec 2021 03:04:36 +0400 Subject: [PATCH 256/271] Fix light --- mods/ENVIRONMENT/mcl_ambient_light/init.lua | 14 ++++++++------ mods/ENVIRONMENT/mcl_ambient_light/mod.conf | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/mods/ENVIRONMENT/mcl_ambient_light/init.lua b/mods/ENVIRONMENT/mcl_ambient_light/init.lua index 11a11d4bc..1b030d1b9 100644 --- a/mods/ENVIRONMENT/mcl_ambient_light/init.lua +++ b/mods/ENVIRONMENT/mcl_ambient_light/init.lua @@ -1,11 +1,13 @@ minetest.register_on_mods_loaded(function () local light_min = 1 - for i, def in pairs(minetest.registered_nodes) do - local light_source = def.light_source - if light_source == nil or light_source < light_min then - minetest.override_item(i, { light_source = light_min }) - elseif light_source == light_min then - minetest.override_item(i, { light_source = light_min + 1 }) + for name, def in pairs(minetest.registered_nodes) do + if name ~= "air" then + local light_source = def.light_source + if light_source == nil or light_source < light_min then + minetest.override_item(name, { light_source = light_min }) + elseif light_source == light_min then + minetest.override_item(name, { light_source = light_min + 1 }) + end end end end) diff --git a/mods/ENVIRONMENT/mcl_ambient_light/mod.conf b/mods/ENVIRONMENT/mcl_ambient_light/mod.conf index f5e77b563..bccea6a89 100644 --- a/mods/ENVIRONMENT/mcl_ambient_light/mod.conf +++ b/mods/ENVIRONMENT/mcl_ambient_light/mod.conf @@ -1,3 +1,3 @@ name = ambient_light -author = MikeRedwood +author = MikeRedwood, kay27 description = Makes all nodes lit to a small degree! From 21f305e33ab8eb71646e0b07954cec305a9b7807 Mon Sep 17 00:00:00 2001 From: kay27 Date: Fri, 17 Dec 2021 03:19:24 +0400 Subject: [PATCH 257/271] Add minor anticheat fixes --- mods/PLAYER/mcl_anticheat/init.lua | 347 +++++++++++++++-------------- 1 file changed, 174 insertions(+), 173 deletions(-) diff --git a/mods/PLAYER/mcl_anticheat/init.lua b/mods/PLAYER/mcl_anticheat/init.lua index 8c5189023..a37c9b5b8 100644 --- a/mods/PLAYER/mcl_anticheat/init.lua +++ b/mods/PLAYER/mcl_anticheat/init.lua @@ -1,173 +1,174 @@ -local flights_kick_threshold = 10 -local suffocations_threshold = 1 - -local after = minetest.after -local get_connected_players = minetest.get_connected_players -local get_node = minetest.get_node -local get_objects_inside_radius = minetest.get_objects_inside_radius -local get_player_by_name = minetest.get_player_by_name -local is_creative_enabled = minetest.is_creative_enabled -local kick_player = minetest.kick_player -local set_node = minetest.set_node - -local ceil = math.ceil -local floor = math.floor - -local distance = vector.distance - -local window_size = 10 -local detection_interval = 1.7 -local step_seconds = detection_interval / window_size -local joined_players = {} - -local function update_player(player_object) - if not player_object then return end - local name = player_object:get_player_name() - if not name then return end - - local pos = player_object:get_pos() - local x, y, z = floor(pos.x), floor(pos.y-0.1), floor(pos.z) - - if mcl_playerplus.elytra then - local elytra = mcl_playerplus.elytra[player_object] - if elytra and elytra.active then - return - end - end - - local air = get_node({x = x , y = y , z = z }).name == "air" - and get_node({x = x , y = y , z = z + 1}).name == "air" - and get_node({x = x , y = y + 1, z = z }).name == "air" - and get_node({x = x , y = y + 1, z = z + 1}).name == "air" - and get_node({x = x + 1, y = y , z = z }).name == "air" - and get_node({x = x + 1, y = y , z = z + 1}).name == "air" - and get_node({x = x + 1, y = y + 1, z = z }).name == "air" - and get_node({x = x + 1, y = y + 1, z = z + 1}).name == "air" - - local player_data = { - pos = pos, - velocity = player_object:get_velocity(), - air = air - } - - if joined_players[name] then - local window_offset = (joined_players[name].window_offset + 1) % window_size - joined_players[name].window_offset = window_offset - joined_players[name][window_offset] = player_data - else - joined_players[name] = { - window_offset = 0, - [0] = player_data, - } - end -end - -local function check_player(name) - if is_creative_enabled(name) then return end - local data = joined_players[name] - if not data then return end - if not data[0] then return end - - local always_air = true - local falling = data[0].velocity.y < 0 - for i = 0, window_size - 1 do - local derivative = data[i] - local not_enough_data = not derivative - if not_enough_data then - return - end - always_air = always_air and derivative.air - falling = falling or derivative.velocity.y < 0 - end - if always_air and not falling then - -- fly detected - if not data.flights then - data.flights = 1 - else - data.flights = data.flights + 1 - if data.flights >= flights_kick_threshold then - kick_player(name, "flights") - end - end - local obj_player = minetest.get_player_by_name(name) - if not obj_player then - kick_player(name, "flights") - end - local velocity = obj_player:get_velocity() - local pos = obj_player:get_pos() - local x, y, z = floor(pos.x), floor(pos.y), floor(pos.z) - while ( get_node({x = x , y = y, z = z }).name == "air" - and get_node({x = x , y = y, z = z + 1}).name == "air" - and get_node({x = x + 1, y = y, z = z }).name == "air" - and get_node({x = x + 1, y = y, z = z + 1}).name == "air" - ) do - y = y - 1 - end - obj_player:set_velocity({x = velocity.x, y = -10, z = velocity.z}) - obj_player:set_pos({x = x, y = y + 0.5, z = z}) - end -end - -local function remove_player(player_object) - if not player_object then return end - local name = player_object:get_player_name() - if not name then return end - minetest.after(step_seconds, function() - joined_players[name] = nil - end) -end - -local function step() - for _, player in pairs(get_connected_players()) do - update_player(player) - check_player(player:get_player_name()) - end - after(step_seconds, step) -end - -minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing) - if not oldnode then return end - if not placer then return end - if oldnode.name ~= "air" then return end - if not placer:is_player() then return end - local placer_pos = placer:get_pos() - local placer_distance = distance(pos, placer_pos) - if placer_distance < 13 then return end - local is_choker = false - for _, object in pairs(get_objects_inside_radius(pos, 2)) do - if object and object:is_player() then - local player_head_pos = object:get_pos() - player_head_pos.y = player_head_pos.y + 1.5 - local player_head_distance = distance(pos, player_head_pos) - if player_head_distance < 0.7 then - after(0.05, function() - set_node(pos, oldnode) - end) - is_choker = true - break - end - end - end - if not is_choker then return end - -- cheater choked the player from distance greater than 12: - local name = placer:get_player_name() - local data = joined_players[name] - if not data then - joined_players[name].suffocations = 1 - else - if not data.suffocations then - data.suffocations = 1 - else - data.suffocations = data.suffocations + 1 - if data.suffocations >= suffocations_threshold then - kick_player(name, "choker") - end - end - end -end) - -minetest.register_on_joinplayer(update_player) - -minetest.register_on_leaveplayer(remove_player) - -after(step_seconds, step) +local flights_kick_threshold = 10 +local suffocations_kick_threshold = 1 + +local after = minetest.after +local get_connected_players = minetest.get_connected_players +local get_node = minetest.get_node +local get_objects_inside_radius = minetest.get_objects_inside_radius +local get_player_by_name = minetest.get_player_by_name +local is_creative_enabled = minetest.is_creative_enabled +local kick_player = minetest.kick_player +local set_node = minetest.set_node + +local ceil = math.ceil +local floor = math.floor + +local distance = vector.distance + +local window_size = 10 +local detection_interval = 1.7 +local step_seconds = detection_interval / window_size +local joined_players = {} + +local function update_player(player_object) + if not player_object then return end + local name = player_object:get_player_name() + if not name then return end + + local pos = player_object:get_pos() + local x, y, z = floor(pos.x), floor(pos.y-0.1), floor(pos.z) + + if mcl_playerplus.elytra then + local elytra = mcl_playerplus.elytra[player_object] + if elytra and elytra.active then + return + end + end + + local air = get_node({x = x , y = y , z = z }).name == "air" + and get_node({x = x , y = y , z = z + 1}).name == "air" + and get_node({x = x , y = y + 1, z = z }).name == "air" + and get_node({x = x , y = y + 1, z = z + 1}).name == "air" + and get_node({x = x + 1, y = y , z = z }).name == "air" + and get_node({x = x + 1, y = y , z = z + 1}).name == "air" + and get_node({x = x + 1, y = y + 1, z = z }).name == "air" + and get_node({x = x + 1, y = y + 1, z = z + 1}).name == "air" + + local player_data = { + pos = pos, + velocity = player_object:get_velocity(), + air = air + } + + if joined_players[name] then + local window_offset = (joined_players[name].window_offset + 1) % window_size + joined_players[name].window_offset = window_offset + joined_players[name][window_offset] = player_data + else + joined_players[name] = { + window_offset = 0, + [0] = player_data, + } + end +end + +local function check_player(name) + if is_creative_enabled(name) then return end + local data = joined_players[name] + if not data then return end + if not data[0] then return end + + local always_air = true + local falling = data[0].velocity.y < 0 + for i = 0, window_size - 1 do + local derivative = data[i] + local not_enough_data = not derivative + if not_enough_data then + return + end + always_air = always_air and derivative.air + falling = falling or derivative.velocity.y < 0 + end + if always_air and not falling then + -- fly detected + if not data.flights then + data.flights = 1 + else + data.flights = data.flights + 1 + if data.flights >= flights_kick_threshold then + kick_player(name, "flights") + end + end + local obj_player = minetest.get_player_by_name(name) + if not obj_player then + kick_player(name, "flights") + end + local velocity = obj_player:get_velocity() + local pos = obj_player:get_pos() + local x, y, z = floor(pos.x), floor(pos.y), floor(pos.z) + while ( get_node({x = x , y = y, z = z }).name == "air" + and get_node({x = x , y = y, z = z + 1}).name == "air" + and get_node({x = x + 1, y = y, z = z }).name == "air" + and get_node({x = x + 1, y = y, z = z + 1}).name == "air" + ) do + y = y - 1 + end + obj_player:set_velocity({x = velocity.x, y = -10, z = velocity.z}) + obj_player:set_pos({x = x, y = y + 0.5, z = z}) + end +end + +local function remove_player(player_object) + if not player_object then return end + local name = player_object:get_player_name() + if not name then return end + minetest.after(step_seconds, function() + joined_players[name] = nil + end) +end + +local function step() + for _, player in pairs(get_connected_players()) do + update_player(player) + check_player(player:get_player_name()) + end + after(step_seconds, step) +end + +minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing) + if not oldnode then return end + if not placer then return end + if oldnode.name ~= "air" then return end + if not placer:is_player() then return end + local placer_pos = placer:get_pos() + local placer_distance = distance(pos, placer_pos) + if placer_distance < 13 then return end + local is_choker = false + for _, object in pairs(get_objects_inside_radius(pos, 2)) do + if object and object:is_player() then + local player_head_pos = object:get_pos() + player_head_pos.y = player_head_pos.y + 1.5 + local player_head_distance = distance(pos, player_head_pos) + if player_head_distance < 0.7 then + after(0.05, function(node) + set_node(pos, node) + end, oldnode) + is_choker = true + break + end + end + end + if not is_choker then return end + -- cheater choked the player from distance greater than 12: + local name = placer:get_player_name() + local data = joined_players[name] + if not data then + joined_players[name].suffocations = 1 + data = joined_players[name] + else + if not data.suffocations then + data.suffocations = 1 + else + data.suffocations = data.suffocations + 1 + end + end + if data.suffocations >= suffocations_kick_threshold then + kick_player(name, "choker") + end +end) + +minetest.register_on_joinplayer(update_player) + +minetest.register_on_leaveplayer(remove_player) + +after(step_seconds, step) From 315ed0e72cf6cfa9d1ba0d4ae1af36e6a792c748 Mon Sep 17 00:00:00 2001 From: kay27 Date: Fri, 17 Dec 2021 03:33:36 +0400 Subject: [PATCH 258/271] Add dummy trident texture --- .../mcl_tridents/textures/mcl_trident.png | Bin 0 -> 249 bytes .../mcl_tridents/textures/mcl_trident_inv.png | Bin 299 -> 5945 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_tridents/textures/mcl_trident.png diff --git a/mods/ITEMS/mcl_tridents/textures/mcl_trident.png b/mods/ITEMS/mcl_tridents/textures/mcl_trident.png new file mode 100644 index 0000000000000000000000000000000000000000..1cc256d003767698b14bababe6cfd1075d51112b GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)3iZ{~7kS-Y(n(6yYrJ zh%9Dc&{GCs#)_r(WkA81o-U3d7N?UF4lvKNtNif)chOogXTxM}BfdHC=B| o*S8lmY3OWpGT_-`z;lR!;jopTwNkaW0??5Rp00i_>zopr04XC^YybcN literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_tridents/textures/mcl_trident_inv.png b/mods/ITEMS/mcl_tridents/textures/mcl_trident_inv.png index 5b4d4290ac0b1f5b09d2b828ddecbadeeebad46c..6b8c85db232c45f09ffe0e1e655acce6410f07b2 100644 GIT binary patch literal 5945 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 delta 273 zcmV+s0q*{}E~^5NBYyz$Nkl=`4f^ggIxg9{QAphhV$po5ezVF8IO@6#1ouc357PUTnhk} X){YUuva25e015yANkvXXu0mjfyJ&p4 From e955c16a93c82b6ddd471fb20dc4619ce7b59a88 Mon Sep 17 00:00:00 2001 From: debiankaios Date: Sat, 25 Dec 2021 19:38:20 +0000 Subject: [PATCH 259/271] Added debian44 to Community debian44 authored mcl_blackstone but wasn't in credits.md --- CREDITS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.md b/CREDITS.md index 8df5ce2a1..bd8a49e65 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -22,6 +22,7 @@ * Code-Sploit * cora * David McMackins II +* debian44 * Debiankaios * Dieter44 * Doloment From 54de60b27e4e8dc390c28d2e8ccdd6a6aa4325fc Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Sat, 25 Dec 2021 21:11:01 +0000 Subject: [PATCH 260/271] Iron Golems no longer drop experience orbs In Minecraft, (Iron) Golems do not drop any xp! (checked in the Minecarft Wiki and confirmed in my copy of Minecraft (1.18.1)) Now they drop at least 0 and at most 0 experience orbs, so you won't get any https://minecraft.fandom.com/wiki/Iron_Golem --- mods/ENTITIES/mobs_mc/iron_golem.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ENTITIES/mobs_mc/iron_golem.lua b/mods/ENTITIES/mobs_mc/iron_golem.lua index 939412abb..d7b2f3613 100644 --- a/mods/ENTITIES/mobs_mc/iron_golem.lua +++ b/mods/ENTITIES/mobs_mc/iron_golem.lua @@ -19,6 +19,8 @@ mobs:register_mob("mobs_mc:iron_golem", { rotate = 270, hp_min = 100, hp_max = 100, + xp_min = 0, + xp_max = 0, protect = true, neutral = true, breath_max = -1, From d40ea5855bda5eb42c8b240d03e5146e4489f1b0 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Sat, 25 Dec 2021 21:14:20 +0000 Subject: [PATCH 261/271] Snow Golems no longer drop experience orbs In Minecraft, (Snow) Golems do not drop any xp! (checked in the Minecarft Wiki and confirmed in my copy of Minecraft (1.18.1)) Now they drop at least 0 and at most 0 experience orbs, so you won't get any https://minecraft.fandom.com/wiki/Snow_Golem --- mods/ENTITIES/mobs_mc/snowman.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ENTITIES/mobs_mc/snowman.lua b/mods/ENTITIES/mobs_mc/snowman.lua index 0726b8da0..e2e17e30e 100644 --- a/mods/ENTITIES/mobs_mc/snowman.lua +++ b/mods/ENTITIES/mobs_mc/snowman.lua @@ -27,6 +27,8 @@ mobs:register_mob("mobs_mc:snowman", { passive = true, hp_min = 4, hp_max = 4, + xp_min = 0, + xp_max = 0, pathfinding = 1, view_range = 10, fall_damage = 0, From 2dbd01b8a0a3da429376bd88bc98fd012655549d Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Sun, 26 Dec 2021 09:47:30 +0000 Subject: [PATCH 262/271] loaded crossbows are no lomger in creative inventory In Minecraft, loaded crossbows are NOT in the creative inventory! https://minecraft.fandom.com/wiki/Crossbow --- mods/ITEMS/mcl_bows/crossbow.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_bows/crossbow.lua b/mods/ITEMS/mcl_bows/crossbow.lua index 5ae21a1f3..3c92a4c92 100644 --- a/mods/ITEMS/mcl_bows/crossbow.lua +++ b/mods/ITEMS/mcl_bows/crossbow.lua @@ -181,7 +181,7 @@ S("The speed and damage of the arrow increases the longer you charge. The regula itemstack:get_meta():set_string("active", "true") return itemstack end, - groups = {weapon=1,weapon_ranged=1,crossbow=1,enchantability=1}, + groups = {not_in_creative_inventory=1,weapon=1,weapon_ranged=1,crossbow=1,enchantability=1}, _mcl_uses = 326, }) From 263bb1607da7df237bbc7b8199a3f73b4179c53c Mon Sep 17 00:00:00 2001 From: NO11 Date: Thu, 30 Dec 2021 13:12:19 +0000 Subject: [PATCH 263/271] Remove arrow entities when the player leaves to prevent killing on startup --- mods/ITEMS/mcl_bows/arrow.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index 343707617..e8efa6662 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -419,6 +419,10 @@ function ARROW_ENTITY.on_step(self, dtime) self.object:set_rotation({ x = 0, y = yaw, z = pitch }) end + if self._in_player and not self.object:get_attach() then + self.object:remove() + end + -- Update internal variable self._lastpos={x=pos.x, y=pos.y, z=pos.z} end From ff433e65feb992becfbffbf3ab1ba833c6dd7798 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Sat, 1 Jan 2022 12:13:22 +0000 Subject: [PATCH 264/271] added Nova_Wostra (creator of Pixel Perfection Legacy) to the credits --- CREDITS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.md b/CREDITS.md index bd8a49e65..04e52d5b1 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -105,6 +105,7 @@ ## Textures * XSSheep +* Nova_Wostra * Wuzzy * kingoscargames * leorockway From b6567ee11c9667adbbb2e10e4740a6ab1814919c Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Sat, 1 Jan 2022 12:15:04 +0000 Subject: [PATCH 265/271] upload the code for the suspicious stew(s) --- mods/ITEMS/mcl_mushrooms/suspicious_stew.lua | 131 +++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 mods/ITEMS/mcl_mushrooms/suspicious_stew.lua diff --git a/mods/ITEMS/mcl_mushrooms/suspicious_stew.lua b/mods/ITEMS/mcl_mushrooms/suspicious_stew.lua new file mode 100644 index 000000000..87e52be26 --- /dev/null +++ b/mods/ITEMS/mcl_mushrooms/suspicious_stew.lua @@ -0,0 +1,131 @@ + +-- ____________________________ +--_________________________________________/ Variables & Functions \_________ + +local eat = minetest.item_eat(6, "mcl_core:bowl") --6 hunger points, player receives mcl_core:bowl after eating + + + +local function poison(itemstack, placer, pointed_thing) + local hunger = mcl_hunger.get_hunger(placer) + if hunger < 20 then + mcl_potions.poison_func(placer, 1, 12) + return eat(itemstack, placer, pointed_thing) + end +end + +local function hunger(itemstack, placer, pointed_thing, player) + local hunger = mcl_hunger.get_hunger(placer) + if hunger < 20 then + return eat(itemstack, placer, pointed_thing) + end +end + +local function jump_boost(itemstack, placer, pointed_thing) + local hunger = mcl_hunger.get_hunger(placer) + if hunger < 20 then + mcl_potions.leaping_func(placer, 1, 6) + return eat(itemstack, placer, pointed_thing) + end +end + +local function regeneration(itemstack, placer, pointed_thing) + local hunger = mcl_hunger.get_hunger(placer) + if hunger < 20 then + mcl_potions.regeneration_func(placer, 1, 8) + return eat(itemstack, placer, pointed_thing) + end +end + +local function night_vision(itemstack, placer, pointed_thing) + local hunger = mcl_hunger.get_hunger(placer) + if hunger < 20 then + mcl_potions.night_vision_func(placer, 1, 5) + return eat(itemstack, placer, pointed_thing) + end +end + + +-- ________________________ +--_________________________________________/ Item Regestration \_________________ +minetest.register_craftitem("mcl_mushrooms:poison_stew",{ + description = "Suspicious Stew", + inventory_image = "suspicious_stew.png", + stack_max = 1, + on_place = poison, + groups = { food = 2, eatable = 4, not_in_creative_inventory=0,}, + _mcl_saturation = 7.2, +}) + +minetest.register_craftitem("mcl_mushrooms:hunger_stew",{ + description = "Suspicious Stew", + inventory_image = "suspicious_stew.png", + stack_max = 1, + on_place = hunger, + groups = { food = 2, eatable = 4, not_in_creative_inventory=0,}, + _mcl_saturation = 7.2, +}) + +minetest.register_craftitem("mcl_mushrooms:jump_boost_stew",{ + description = "Suspicious Stew", + inventory_image = "suspicious_stew.png", + stack_max = 1, + on_place = jump_boost, + groups = { food = 2, eatable = 4, not_in_creative_inventory=0,}, + _mcl_saturation = 7.2, +}) + +minetest.register_craftitem("mcl_mushrooms:regneration_stew",{ + description = "Suspicious Stew", + inventory_image = "suspicious_stew.png", + stack_max = 1, + on_place = regeneration, + groups = { food = 2, eatable = 4, not_in_creative_inventory=0,}, + _mcl_saturation = 7.2, +}) + +minetest.register_craftitem("mcl_mushrooms:night_vision_stew",{ + description = "Suspicious Stew", + inventory_image = "suspicious_stew.png", + stack_max = 1, + on_place = night_vision, + groups = { food = 2, eatable = 4, not_in_creative_inventory=0,}, + _mcl_saturation = 7.2, +}) + +-- ____________________________ +--______________________________________/ Using mcl_hunger API \______________________ +mcl_hunger.register_food("mcl_sus_stew:hunger_stew",6, "mcl_core:bowl", 3.5, 0, 100) -- Register it using mcl_hunger so i can use its poison feature + +-- ______________ +--_________________________________________/ Crafts \________________________________ + +minetest.register_craft({ + output = "mcl_mushrooms:poison_stew", + recipe = { {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"}, {"mcl_core:bowl", "mcl_flowers:tulip_white"} }, +}) + +minetest.register_craft({ + output = "mcl_mushrooms:hunger_stew", + recipe = { {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"}, {"mcl_core:bowl", "mcl_flowers:blue_orchid"} }, +}) + +minetest.register_craft({ + output = "mcl_mushrooms:hunger_stew", + recipe = { {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"}, {"mcl_core:bowl", "mcl_flowers:dandelion"} }, +}) + +minetest.register_craft({ + output = "mcl_mushrooms:jump_boost_stew", + recipe = { {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"}, {"mcl_core:bowl", "mcl_flowers:peony"} }, +}) + +minetest.register_craft({ + output = "mcl_mushrooms:regeneration_stew", + recipe = { {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"}, {"mcl_core:bowl", "mcl_flowers:oxeye_daisy"} }, +}) + +minetest.register_craft({ + output = "mcl_mushrooms:night_vision_stew", + recipe = { {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"}, {"mcl_core:bowl", "mcl_flowers:poppy"} }, +}) \ No newline at end of file From c263d1a622b0ec0f16f84d49b343d2a94b841cef Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Sat, 1 Jan 2022 12:17:29 +0000 Subject: [PATCH 266/271] registered suspicious_stew.lua within mcl_mushrooms --- mods/ITEMS/mcl_mushrooms/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/ITEMS/mcl_mushrooms/init.lua b/mods/ITEMS/mcl_mushrooms/init.lua index 1360eabe7..64368fdf8 100644 --- a/mods/ITEMS/mcl_mushrooms/init.lua +++ b/mods/ITEMS/mcl_mushrooms/init.lua @@ -1,5 +1,6 @@ dofile(minetest.get_modpath("mcl_mushrooms").."/small.lua") dofile(minetest.get_modpath("mcl_mushrooms").."/huge.lua") +dofile(minetest.get_modpath("mcl_mushrooms").."/suspicious_stew.lua") -- Aliases for old MCL2 versions minetest.register_alias("mcl_farming:mushroom_red", "mcl_mushrooms:mushroom_red") From 4a2b07115afafab8b8ae33a6d30f81acd12ed566 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Sat, 1 Jan 2022 12:18:29 +0000 Subject: [PATCH 267/271] added new dependencies (everything required is within mineclone5) --- mods/ITEMS/mcl_mushrooms/mod.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_mushrooms/mod.conf b/mods/ITEMS/mcl_mushrooms/mod.conf index 20f7bef16..b3ed9b130 100644 --- a/mods/ITEMS/mcl_mushrooms/mod.conf +++ b/mods/ITEMS/mcl_mushrooms/mod.conf @@ -1,3 +1,3 @@ name = mcl_mushrooms -depends = mcl_sounds, mcl_util +depends = mcl_sounds, mcl_util, mcl_core, mcl_flowers, mcl_potions, mcl_hunger optional_depends = doc From a03e532a8501b21ba7684481dd23607ef163e9b4 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Sat, 1 Jan 2022 12:19:50 +0000 Subject: [PATCH 268/271] upload the texture for the suspicious stew --- .../mcl_mushrooms/textures/suspicious_stew.png | Bin 0 -> 445 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/ITEMS/mcl_mushrooms/textures/suspicious_stew.png diff --git a/mods/ITEMS/mcl_mushrooms/textures/suspicious_stew.png b/mods/ITEMS/mcl_mushrooms/textures/suspicious_stew.png new file mode 100644 index 0000000000000000000000000000000000000000..3580c35aa063a70d0a424ed2d8530b7bc0112f4b GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-J2RV{+2iMFZ43;IUY;(FAr`0KPTcR!#3<1=zuU#Y zx?W(SjHRTK$CV&~b$MvnO=4`ZCN{`MP=4q6d>zR&^b^cX8&2Tt_7_v)5Ve zQzf~l?TlquHjht3Uw2bk{o$P(8v}2tMH@1BJp1IdUqO(2_QeIW+uej~OC=jJ-b&3r z?HYc0LzhylFSEkiugUgys?ml(m4`SEv=qE_6hX2_=H|&%y^k=$911ArJ;Lu^uy!k l-@3BCKAZ3-@{jW#=IvYR%l7>9ISCAC22WQ%mvv4FO#rEFv3mdj literal 0 HcmV?d00001 From fa892e880e2cfcb5eb75774409b91b77db8f08f6 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Sat, 1 Jan 2022 12:23:13 +0000 Subject: [PATCH 269/271] removed the code I used during debugging Now, suspicious stews are no longer in the creative inventory, and have to be crafted or obtained using /giveme --- mods/ITEMS/mcl_mushrooms/suspicious_stew.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_mushrooms/suspicious_stew.lua b/mods/ITEMS/mcl_mushrooms/suspicious_stew.lua index 87e52be26..eb4246467 100644 --- a/mods/ITEMS/mcl_mushrooms/suspicious_stew.lua +++ b/mods/ITEMS/mcl_mushrooms/suspicious_stew.lua @@ -53,7 +53,7 @@ minetest.register_craftitem("mcl_mushrooms:poison_stew",{ inventory_image = "suspicious_stew.png", stack_max = 1, on_place = poison, - groups = { food = 2, eatable = 4, not_in_creative_inventory=0,}, + groups = { food = 2, eatable = 4, not_in_creative_inventory=1,}, _mcl_saturation = 7.2, }) @@ -62,7 +62,7 @@ minetest.register_craftitem("mcl_mushrooms:hunger_stew",{ inventory_image = "suspicious_stew.png", stack_max = 1, on_place = hunger, - groups = { food = 2, eatable = 4, not_in_creative_inventory=0,}, + groups = { food = 2, eatable = 4, not_in_creative_inventory=1,}, _mcl_saturation = 7.2, }) @@ -71,7 +71,7 @@ minetest.register_craftitem("mcl_mushrooms:jump_boost_stew",{ inventory_image = "suspicious_stew.png", stack_max = 1, on_place = jump_boost, - groups = { food = 2, eatable = 4, not_in_creative_inventory=0,}, + groups = { food = 2, eatable = 4, not_in_creative_inventory=1,}, _mcl_saturation = 7.2, }) @@ -80,7 +80,7 @@ minetest.register_craftitem("mcl_mushrooms:regneration_stew",{ inventory_image = "suspicious_stew.png", stack_max = 1, on_place = regeneration, - groups = { food = 2, eatable = 4, not_in_creative_inventory=0,}, + groups = { food = 2, eatable = 4, not_in_creative_inventory=1,}, _mcl_saturation = 7.2, }) @@ -89,7 +89,7 @@ minetest.register_craftitem("mcl_mushrooms:night_vision_stew",{ inventory_image = "suspicious_stew.png", stack_max = 1, on_place = night_vision, - groups = { food = 2, eatable = 4, not_in_creative_inventory=0,}, + groups = { food = 2, eatable = 4, not_in_creative_inventory=1,}, _mcl_saturation = 7.2, }) From cdab29a42efd23e49573bb43d5a6687dceb1fe62 Mon Sep 17 00:00:00 2001 From: chmodsayshello Date: Sat, 1 Jan 2022 13:52:38 +0000 Subject: [PATCH 270/271] replaced old itemstring --- mods/ITEMS/mcl_mushrooms/suspicious_stew.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_mushrooms/suspicious_stew.lua b/mods/ITEMS/mcl_mushrooms/suspicious_stew.lua index eb4246467..2106ab8ab 100644 --- a/mods/ITEMS/mcl_mushrooms/suspicious_stew.lua +++ b/mods/ITEMS/mcl_mushrooms/suspicious_stew.lua @@ -95,7 +95,7 @@ minetest.register_craftitem("mcl_mushrooms:night_vision_stew",{ -- ____________________________ --______________________________________/ Using mcl_hunger API \______________________ -mcl_hunger.register_food("mcl_sus_stew:hunger_stew",6, "mcl_core:bowl", 3.5, 0, 100) -- Register it using mcl_hunger so i can use its poison feature +mcl_hunger.register_food("mcl_mushrooms:hunger_stew",6, "mcl_core:bowl", 3.5, 0, 100) -- Register it using mcl_hunger so i can use its poison feature -- ______________ --_________________________________________/ Crafts \________________________________ From 53860a8f799c3a4c27491cad0895eb78042f4f8a Mon Sep 17 00:00:00 2001 From: NO11 Date: Sat, 1 Jan 2022 23:00:02 +0000 Subject: [PATCH 271/271] Remove arrow entities when the player joins to prevent killing on startup (working fix) --- mods/ITEMS/mcl_bows/arrow.lua | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index e8efa6662..7e5ab169a 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -419,10 +419,6 @@ function ARROW_ENTITY.on_step(self, dtime) self.object:set_rotation({ x = 0, y = yaw, z = pitch }) end - if self._in_player and not self.object:get_attach() then - self.object:remove() - end - -- Update internal variable self._lastpos={x=pos.x, y=pos.y, z=pos.z} end @@ -457,11 +453,21 @@ function ARROW_ENTITY.get_staticdata(self) return minetest.serialize(out) end +local function remove_arrow_on_joinplayer(staticdata, self) + if not staticdata.activated then + staticdata.activated = true + else + self.object:remove() + end +end + function ARROW_ENTITY.on_activate(self, staticdata, dtime_s) self._time_in_air = 1.0 self._in_player = false local data = minetest.deserialize(staticdata) if data then + remove_arrow_on_joinplayer(data, self) + self._stuck = data.stuck if data.stuck then if data.stuckstarttime then