From f95799f5549bec3c766b477b2a2092d4e61990b1 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 7 Jan 2021 21:52:00 +0100 Subject: [PATCH] update --- .../textures/advtrains_hud_arrow.png | Bin 0 -> 92 bytes .../advtrains/textures/advtrains_hud_atc.png | Bin 0 -> 714 bytes .../advtrains/textures/advtrains_hud_b.png | Bin 0 -> 355 bytes .../advtrains/textures/advtrains_hud_bg.png | Bin 0 -> 67 bytes .../advtrains/textures/advtrains_hud_emg.png | Bin 0 -> 718 bytes .../textures/advtrains_hud_forward.png | Bin 0 -> 1147 bytes .../textures/advtrains_hud_left_door.png | Bin 0 -> 1032 bytes .../advtrains/textures/advtrains_hud_lzb.png | Bin 0 -> 618 bytes .../advtrains/textures/advtrains_hud_n.png | Bin 0 -> 376 bytes .../advtrains/textures/advtrains_hud_p.png | Bin 0 -> 274 bytes .../advtrains/textures/advtrains_hud_r.png | Bin 0 -> 322 bytes .../textures/advtrains_hud_reverse.png | Bin 0 -> 1256 bytes .../textures/advtrains_hud_right_door.png | Bin 0 -> 1295 bytes .../textures/advtrains_hud_shunt.png | Bin 0 -> 793 bytes mods/advtrains/advtrains/trainhud.lua | 196 +++++++++++++----- mods/cloud_items/LICENSE.md | 4 +- mods/cloud_items/README.md | 2 +- mods/cloud_items/init.lua | 14 +- mods/cloud_items/settingtypes.txt | 4 + mods/mobs_redo/api.lua | 5 +- mods/stamina/init.lua | 45 ++-- mods/stamina/settingtypes.txt | 2 + mods/vehicle_mash/LICENSE.md | 3 + mods/vehicle_mash/README.md | 5 +- 24 files changed, 191 insertions(+), 89 deletions(-) create mode 100644 mods/advtrains/advtrains/textures/advtrains_hud_arrow.png create mode 100644 mods/advtrains/advtrains/textures/advtrains_hud_atc.png create mode 100644 mods/advtrains/advtrains/textures/advtrains_hud_b.png create mode 100644 mods/advtrains/advtrains/textures/advtrains_hud_bg.png create mode 100644 mods/advtrains/advtrains/textures/advtrains_hud_emg.png create mode 100644 mods/advtrains/advtrains/textures/advtrains_hud_forward.png create mode 100644 mods/advtrains/advtrains/textures/advtrains_hud_left_door.png create mode 100644 mods/advtrains/advtrains/textures/advtrains_hud_lzb.png create mode 100644 mods/advtrains/advtrains/textures/advtrains_hud_n.png create mode 100644 mods/advtrains/advtrains/textures/advtrains_hud_p.png create mode 100644 mods/advtrains/advtrains/textures/advtrains_hud_r.png create mode 100644 mods/advtrains/advtrains/textures/advtrains_hud_reverse.png create mode 100644 mods/advtrains/advtrains/textures/advtrains_hud_right_door.png create mode 100644 mods/advtrains/advtrains/textures/advtrains_hud_shunt.png create mode 100644 mods/cloud_items/settingtypes.txt diff --git a/mods/advtrains/advtrains/textures/advtrains_hud_arrow.png b/mods/advtrains/advtrains/textures/advtrains_hud_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..51f5b429150a5fbb14c4ffc24b8113d72889ea89 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^{2LpZJ{|M=g}*!1du!-T*5 p0+aqTIQ`*w==jUPVQ9`E$na{m;2VQo@e4rOJYD@<);T3K0RT6e8*%^u literal 0 HcmV?d00001 diff --git a/mods/advtrains/advtrains/textures/advtrains_hud_atc.png b/mods/advtrains/advtrains/textures/advtrains_hud_atc.png new file mode 100644 index 0000000000000000000000000000000000000000..06c6c1cca69990c9c6ea78ec96b3d269c3d319b4 GIT binary patch literal 714 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 N002ovPDHLkV1nr^LLC4A literal 0 HcmV?d00001 diff --git a/mods/advtrains/advtrains/textures/advtrains_hud_left_door.png b/mods/advtrains/advtrains/textures/advtrains_hud_left_door.png new file mode 100644 index 0000000000000000000000000000000000000000..51b24472b27f16d65e1cca7881760147d0f26add GIT binary patch literal 1032 zcmV+j1o!)iP)003kJ0{{R3g6ZE*0000UP)t-s0000W zARs_MKwn>9e}8|To}RwGzTMs3{QUg?|Nr1GqLlyu1EonsK~#9!?VCM=+As`;%|Y+b z#(Ep;ZMU+q@)Ov)cI(=$>usjx;QVh}J`>wga2zQlMDG+ruy~xl}e>jsZ=VJ zN~Kb%9#`Q0Yuj&z1A@yVcl)Hq%d-7PcbVuJraFcW`RK0a=&k{}8!-A;pV7fX2f76m zy)$!N19Y>@Lw9{gx8A2(=(gwRCKVm&i2kARwSwpiWNbD=hY0<=;%#VGm~<-T(4S+!yX1@S zeJ{NZxJ;9zp$%x!#qdS zTZwKBc}GOhjqf?_P09nojt;G%r*%q*J`+Zt)AKS5I-a6H(O&{|BaCkDg8rUh{vpsU zI?QnMyH?QGsO>H9x?UIEp%XASx=Xg*z?+L9E@#}m(TReHyP(4(pkJTr(QwhB8vW03 z(XFB@`Xivzj(T^-x~=#P2YQERcxiMqG<3*AU$lz8kwdpQ#H0&8{OU$7j-{%io8b${ zqR$N-uiIKNa~tTtuGK$m6;w5LX~r$1OKecNFwc;+Hz$s6@xEZImb|eeySooMZoBzd zKi%}7IC`+|C8Ys+lY;PbrjzXKizxc5M9vMcO0?vhTU+Qss&mDWX$7+Hz$l003kJ0{{R3g6ZE*0000UP)t-s0000W zARs_MKwn>9e}8|To}RwGzTMs3{QUg?|Nr1GqLlyu0tZP%K~#9!?VP<%!%z%HZzU-5 z#>&>UkHDkw2;I7}v9evkK>fC;1Zb1kH;I&?{`{SdM3#E+{j)En6ha6ggb+dqA%xsA zdd7caakSs=@~Ugis~*jLP4!^ztEy{a^_o{*6RRH~)ZO2P6&G>DFHsj?{a+qb{W`JZ zIAry^Yq@cpL_5wdP?zi3Y{W&I>l2BdxQ`w3;Kl%hz z*LmuIS(m|yC6W5eVCzbxu2#L0Vwvm4`$tCgQAwIcT}EY@caSZZ>NTUf+MS8e<9(jG z%upB129?ow8^%2#b!0ExtJ9A9`(Y2(hi{K%=-U^kJ=0RJXzHTgPKJ8Z+FInCtfQ%K z)T`3q=eoUNLti)cCEw<$Lmg?vPN&9C`{d_6*x4M$ZR4eVQr$_Wcju-!>ZA6IANT(A z>=8!Y8^-R2S5eg6QEWYahEjj>GHJz0tjRv{Y2BsE-|;}yyF8vUs{4C2y871Ns?8UI zquyvW`szCf^~T@$`|1@zy>&DNAMmY$1Y3R6szJwc?;NIMn$nfp&_XPASn7YwT7xxQK-AK^*cMxl< zm$d3NuX;(VUel_dN?P@jRXy52Y#@XXLI@#*5JGN>Z_?U57&<2|{{R3007*qoM6N<$ Ef~T!PzW@LL literal 0 HcmV?d00001 diff --git a/mods/advtrains/advtrains/textures/advtrains_hud_n.png b/mods/advtrains/advtrains/textures/advtrains_hud_n.png new file mode 100644 index 0000000000000000000000000000000000000000..bd05f129efdb180f4f15d09150c93552558d1701 GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0y~yVEh7Pr?4;s$)=b0{eYBQfKP}kkXBGoaBy&lkB_gf zub($>-oAbN?%uuo=g*)2|NlSGUo;h{Rn*hPF{I+w+gp2mk2pxMB{s8MN}J*!owB6F zS+m-SV_Ed1-y6?QP&#s^Ww!0FdnZ0^3JC>+tMPmdKi_^fxxgQ1mGrAeZ;A4<^DmrW zO#AAWm%ZIR|1&%|=rRBI(d-w=+kd?HKY!nUpQj7opOcGqxUU=MBF`{C&dTf8*GIlz z#2d_2|7Lwu`*rovV(S;TkFI`kd$arW3+CPB7tPcA^A@fb*I#^}=|k3%_2T)9*Nf#Z zzR&z2W6654^^4=h~Kb=O3@Jy23wzgF;a`}Df!OZAg}b;Ln@7P|kMxZPy`%QFv8asvh-gQu&X J%Q~loCIFgouvP#7 literal 0 HcmV?d00001 diff --git a/mods/advtrains/advtrains/textures/advtrains_hud_p.png b/mods/advtrains/advtrains/textures/advtrains_hud_p.png new file mode 100644 index 0000000000000000000000000000000000000000..f853b782fb5706213c7880cacaffa0a559eceb96 GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0y~yVEh7Pr?4;s$)=b0{eTpIfKP}kkXBGoaBy&#H*enm z|Nku;qtt*x`#fD7Ln>~)y>*b2$x(peU~LS89nX<=MjfM{$Deo$?qN8x?%aZegqw-i zCaHJ=(f&Jz@vSd6@BY&9cgnpD^DnFW+>ia$^3vMre?i;J_l6vo;=d`?-c=T^ce3C0 zMRb|Gv2nj%?S<$st$jf7uF(0v^slYn-!pkHse8ZITd^wpr1JK5`VY!=#o!sr!5>`0DF0fnbuL$q2IbpnKWzuh;PZ&I1{an^LB{Ts5kQr}A literal 0 HcmV?d00001 diff --git a/mods/advtrains/advtrains/textures/advtrains_hud_r.png b/mods/advtrains/advtrains/textures/advtrains_hud_r.png new file mode 100644 index 0000000000000000000000000000000000000000..b357cabbcab48686f3745fc6ac3f8549c9a6d672 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0y~yVEh7Pr?4;s$)=b0{eYB2fKP}kkXBGoaBy&_udkms zZ{EIr`~Lj-^Z)<HFFAk9e<^)^DSXDh(wEvk_UbRb z+kaR5eEj_VQ;*I68hiYYWO4n)aXCF{%j5Lr z0$h)Mwf&_d>vsS0{TRm{oxih|mg~>7)y-JC@|8U2>nZ@4`hS5I>{tV+D_`dwk-rYfINF)h_S`yEXkQYt)`i$HEK#_5nT2;OXk; Jvd$@?2>?$jor3@X literal 0 HcmV?d00001 diff --git a/mods/advtrains/advtrains/textures/advtrains_hud_reverse.png b/mods/advtrains/advtrains/textures/advtrains_hud_reverse.png new file mode 100644 index 0000000000000000000000000000000000000000..1e2a6f80d50d06329cb5074ba5a248d3f0b01be1 GIT binary patch literal 1256 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 FV1mCNlgt1B literal 0 HcmV?d00001 diff --git a/mods/advtrains/advtrains/textures/advtrains_hud_shunt.png b/mods/advtrains/advtrains/textures/advtrains_hud_shunt.png new file mode 100644 index 0000000000000000000000000000000000000000..6517e42cca144619cd0095564e4633a74934a1dd GIT binary patch literal 793 zcmV+!1LpjRP)003kJ0{{R3g6ZE*0000UP)t-s0000W zARs_MKwn>9e}8|To}RwGzTMs3{QUg?|Nr1GqLlyu0=7v+K~#9!?cBRk>o5=o;N=oH z+tJd|rlX}huW`E5($UhFN7qXUt3&<}9k{!a&eTU$Jcy(=Vib(LqO} z8=Y9yRKbPNj2`&u8x{>E}_| zXGA(mRg4n-F>2Hq9SS=_MC8Q6U5Oqy>XJ@34b>}GMaNO-RHkpSiGKLs2iB-J`q%#4 z=jr@pt){;K06hO_)#ns+cEwKLmHca>yI&}MoMOZ$cF8{<&YS4cMWj=@v{S-;Of6k% z)MqhT#s^=5*g#)C+4M>euV4S;4|hKOZx!81{ngt-R(i29Qd|)cJ+kW`F zjt(Qx<7GFOEZxmU|GHo&rl#MbyHV)T3C}n0C#MJa+|+bFx{p^z=am(wjLt7~>gdN& zuaFLFKH_!JK{1`rytL6#1AQfyBvsH+uErXDe!9!_h|!Hc)x|ASf^MT<4@sv}(9!6F z(VbYPY@$MNWp_%Ua>N`rB|elYrN z^iT!zCB_2%)i3FdMaOWxWm8#^MZPXeBhtYuy`RGTe3*V$oDthp8FhhROuui0DeZ(12WcoJnqI%E!dj_$XEA?dOGzKXu~hDjYAdwV5D z{aXt-9lT*uM?dTCZ6L|Vh_bm{n%uPBLiMx^(GF*=TAFNhz5~W$u~;k?i^XEGSlaRd XAR!f;pA*|`00000NkvXXu0mjf$~=)9 literal 0 HcmV?d00001 diff --git a/mods/advtrains/advtrains/trainhud.lua b/mods/advtrains/advtrains/trainhud.lua index c90a4062..46979528 100644 --- a/mods/advtrains/advtrains/trainhud.lua +++ b/mods/advtrains/advtrains/trainhud.lua @@ -9,7 +9,6 @@ advtrains.hhud[player:get_player_name()] = nil end) local mletter={[1]="F", [-1]="R", [0]="N"} -local doorstr={[-1]="|<>| >|<", [0]=">|< >|<", [1]=">|< |<>|"} function advtrains.on_control_change(pc, train, flip) local maxspeed = train.max_speed or 10 @@ -89,38 +88,55 @@ function advtrains.on_control_change(pc, train, flip) end function advtrains.update_driver_hud(pname, train, flip) local inside=train.text_inside or "" - advtrains.set_trainhud(pname, inside.."\n"..advtrains.hud_train_format(train, flip)) + local ft, ht = advtrains.hud_train_format(train, flip) + advtrains.set_trainhud(pname, inside.."\n"..ft, ht) end function advtrains.clear_driver_hud(pname) advtrains.set_trainhud(pname, "") end -function advtrains.set_trainhud(name, text) +function advtrains.set_trainhud(name, text, driver) local hud = advtrains.hud[name] local player=minetest.get_player_by_name(name) if not player then return end + local driverhud = { + hud_elem_type = "image", + name = "ADVTRAINS_DRIVER", + position = {x=0.5, y=0.7}, + offset = {x=0,y=5}, + text = driver or "", + alignment = {x=0,y=1}, + scale = {x=1,y=1},} if not hud then - hud = {} + hud = {["driver"]={}} advtrains.hud[name] = hud hud.id = player:hud_add({ hud_elem_type = "text", name = "ADVTRAINS", number = 0xFFFFFF, position = {x=0.5, y=0.7}, - offset = {x=0, y=0}, + offset = {x=0, y=-5}, text = text, scale = {x=200, y=60}, - alignment = {x=0, y=0}, + alignment = {x=0, y=-1}, }) hud.oldText=text - return - elseif hud.oldText ~= text then - player:hud_change(hud.id, "text", text) - hud.oldText=text + hud.driver = player:hud_add(driverhud) + else + if hud.oldText ~= text then + player:hud_change(hud.id, "text", text) + hud.oldText=text + end + if hud.driver then + player:hud_change(hud.driver, "text", driver or "") + elseif driver then + hud.driver = player:hud_add(driverhud) + end end end + function advtrains.set_help_hud(name, text) local hud = advtrains.hhud[name] local player=minetest.get_player_by_name(name) @@ -160,67 +176,135 @@ Value Disp Control Meaning ]] function advtrains.hud_train_format(train, flip) - local fct=flip and -1 or 1 - if not train then return "" end + if not train then return "","" end + local sformat = string.format -- this appears to be faster than (...):format local max = train.max_speed or 10 - local res = train.speed_restriction or max + local res = train.speed_restriction local vel = advtrains.abs_ceil(train.velocity) local vel_kmh=advtrains.abs_ceil(advtrains.ms_to_kmh(train.velocity)) - local levers = "B - o +" - local tlev=train.lever + local levers = {[0] = "emg","b","r","n","p"} + local lvrcolor = {[0] = "red", "orange", "orange", "cyan", "cyan"} + local tlev=train.lever or 1 if train.velocity==0 and not train.active_control then tlev=1 end - if tlev == 0 then levers = ">BB< - o +" end - if tlev == 1 then levers = ">B< - o +" end - if tlev == 2 then levers = "B >-< o +" end - if tlev == 3 then levers = "B - >o< +" end - if tlev == 4 then levers = "B - o >+<" end - local topLine, firstLine + local st = {} + if train.debug then st = {train.debug} end - local secondLine + local ht = {"[combine:300x150:0,0=(advtrains_hud_bg.png^[resize\\:300x150)"} + ht[#ht+1] = "100,0=(advtrains_hud_" .. (flip and "reverse" or "forward") .. ".png^[resize\\:100x20^[makealpha\\:#000000)" + ht[#ht+1] = "200,0=(advtrains_hud_" .. (levers[tlev] or "bg") .. ".png^[resize\\:100x20^[multiply\\:" .. (lvrcolor[tlev] or "#000000") .. "^[makealpha\\:#000000)" if train.tarvelocity or train.atc_command then - local b=" " - local tvels="" - if train.tarvelocity then - local tvel = advtrains.abs_ceil(train.tarvelocity) - tvels = "|"..string.rep("+", tvel)..string.rep("_", max-tvel) - end - if train.atc_brake_target then - b="-B-" - end - local ad = "" - if train.atc_delay then - ad = " "..advtrains.abs_ceil(train.atc_delay).."s " - end - secondLine="ATC"..b..": "..tvels..ad..(train.atc_command or "") - else - secondLine = "Manual operation" - if train.ctrl.lzb then - secondLine = "-!- Safety override -!-" + ht[#ht+1] = "100,20=(advtrains_hud_atc.png^[resize\\:100x20^[makealpha\\:#000000)" + end + if train.ctrl.lzb then + ht[#ht+1] = "200,20=(advtrains_hud_lzb.png^[resize\\:100x20^[multiply\\:red^[makealpha\\:#000000)" + end + if train.is_shunt then + ht[#ht+1] = "100,40=(advtrains_hud_shunt.png^[resize\\:100x20^[makealpha\\:#000000)" + end + if train.door_open == -1 then + ht[#ht+1] = "100,60=(advtrains_hud_left_door.png^[resize\\:100x20^[makealpha\\:#000000)" + elseif train.door_open == 1 then + ht[#ht+1] = "200,60=(advtrains_hud_right_door.png^[resize\\:100x24^[makealpha\\:#000000)" + end + -- speed indication(s) + local function sevenseg(digit, x, y, w, h, m) + --[[ + -1- + 2 3 + -4- + 5 6 + -7- + ]] + local segs = { + {h, 0, w, h}, + {0, h, h, w}, + {w+h, h, h, w}, + {h, w+h, w, h}, + {0, w+2*h, h, w}, + {w+h, w+2*h, h, w}, + {h, 2*(w+h), w, h}} + local trans = { + [0] = {true, true, true, false, true, true, true}, + [1] = {false, false, true, false, false, true, false}, + [2] = {true, false, true, true, true, false, true}, + [3] = {true, false, true, true, false, true, true}, + [4] = {false, true, true, true, false, true, false}, + [5] = {true, true, false, true, false, true, true}, + [6] = {true, true, false, true, true, true, true}, + [7] = {true, false, true, false, false, true, false}, + [8] = {true, true, true, true, true, true, true}, + [9] = {true, true, true, true, false, true, true}} + local ent = trans[digit or 10] + if not ent then return end + for i = 1, 7, 1 do + if ent[i] then + local s = segs[i] + ht[#ht+1] = sformat("%d,%d=(advtrains_hud_bg.png^[resize\\:%dx%d^%s)",x+s[1], y+s[2], s[3], s[4], m) + end end end - local shtind = train.is_shunt and "S" or ">" - - topLine=" ["..mletter[fct].."] {"..levers.."} "..doorstr[(train.door_open or 0)].." "..(train.line and "L: "..train.line or "") - firstLine=attrans("Speed:").." |"..string.rep("+", vel)..string.rep("_", res-vel).."|"..string.rep("_", max-res)..shtind.." "..vel_kmh.." km/h" - if train.speed_restriction == 0 then - firstLine = "OVERRUN RED SIGNAL! Examine situation and reverse train to move again." + sevenseg(math.floor(vel/10), 5, 5, 20, 10, "[colorize\\:red\\:255") + sevenseg(vel%10, 55, 5, 20, 10, "[colorize\\:red\\:255") + for i = 1, vel, 1 do + ht[#ht+1] = sformat("%d,100=(advtrains_hud_bg.png^[resize\\:11x30^[colorize\\:white)", i*14-3) + end + for i = max+1, 20, 1 do + ht[#ht+1] = sformat("%d,100=(advtrains_hud_bg.png^[resize\\:11x30^[colorize\\:lightgray)", i*14-3) + end + if res and res > 0 then + ht[#ht+1] = sformat("%d,95=(advtrains_hud_bg.png^[resize\\:3x40^[colorize\\:red\\:255)", 8+res*14) + end + if train.tarvelocity then + ht[#ht+1] = sformat("%d,130=(advtrains_hud_arrow.png^[multiply\\:cyan^[transformFY^[makealpha\\:#000000)", 2+train.tarvelocity*14) end - local lzb = train.lzb - - local i = 1 - while i<=#lzb.oncoming do - local k = lzb.oncoming[i] - secondLine = secondLine .. "\n".."LZB: speed limit ["..(k.spd or "E")..("] in %.1f m"):format(k.idx-train.index) - if k.spd == 0 then + if lzb and lzb.oncoming then + local oc = lzb.oncoming + for i = 1, #oc do + local spd = oc[i].spd + if not spd then + ht[#ht+1] = "203,43=(advtrains_hud_bg.png^[resize\\:14x14^[colorize\\:lime\\:255)" + elseif spd == 0 then + ht[#ht+1] = "283,43=(advtrains_hud_bg.png^[resize\\:14x14^[colorize\\:red\\:255)" + elseif tonumber(spd) then + ht[#ht+1] = "243,43=(advtrains_hud_bg.png^[resize\\:14x14^[colorize\\:orange\\:255)" + ht[#ht+1] = sformat("%d,85=(advtrains_hud_arrow.png^[multiply\\:red^[makealpha\\:#000000)", 2+spd*14) + end break end - i=i+1 end - - return (train.debug or "").."\n"..topLine.."\n"..firstLine.."\n"..secondLine + if res and res == 0 then + st[#st+1] = attrans("OVERRUN RED SIGNAL! Examine situation and reverse train to move again.") + end + + if train.atc_command then + st[#st+1] = sformat("ATC: %s%s", train.atc_delay and advtrains.abs_ceil(train.atc_delay).."s " or "", train.atc_command or "") + end + + return table.concat(st,"\n"), table.concat(ht,":") end + +local _, texture = advtrains.hud_train_format { -- dummy train object to demonstrate the train hud + max_speed = 15, speed_restriction = 12, velocity = 12, tarvelocity = 15, + active_control = true, lever = 3, ctrl = {lzb = true}, is_shunt = true, + door_open = 1, lzb = {oncoming = {{spd=6}}} +} + +minetest.register_node("advtrains:hud_demo",{ + description = "Train HUD demonstration", + tiles = {texture}, + groups = {cracky = 3, not_in_creative_inventory = 1} +}) + +minetest.register_craft { + output = "advtrains:hud_demo", + recipe = { + {"default:paper", "default:paper", "default:paper"}, + {"default:paper", "advtrains:trackworker", "default:paper"}, + {"default:paper", "default:paper", "default:paper"}, + } +} \ No newline at end of file diff --git a/mods/cloud_items/LICENSE.md b/mods/cloud_items/LICENSE.md index cea73229..f217a491 100644 --- a/mods/cloud_items/LICENSE.md +++ b/mods/cloud_items/LICENSE.md @@ -1,6 +1,6 @@ # License for textures/media -Copyright (C) 2019-2020 Panquesito7, David Leal (halfpacho@gmail.com)\ +Copyright (C) 2019-2021 Panquesito7, David Leal (halfpacho@gmail.com)\ Copyright (C) Various other Minetest developers/contributors [David Leal](https://github.com/Panquesito7) ([CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)): @@ -42,7 +42,7 @@ Copyright (C) [davidthecreator](https://forum.minetest.net/memberlist.php?mode=v ## License for source code -Copyright (C) 2019-2020 Panquesito7, David Leal (halfpacho@gmail.com)\ +Copyright (C) 2019-2021 Panquesito7, David Leal (halfpacho@gmail.com)\ Copyright (C) Various other Minetest developers/contributors GNU LESSER GENERAL PUBLIC LICENSE diff --git a/mods/cloud_items/README.md b/mods/cloud_items/README.md index 0b6605e6..69ceff94 100644 --- a/mods/cloud_items/README.md +++ b/mods/cloud_items/README.md @@ -119,7 +119,7 @@ It shall work with MT 5.0.0 and above, though. ## License -Copyright (C) 2019-2020 Panquesito7, David Leal\ +Copyright (C) 2019-2021 Panquesito7, David Leal\ Copyright (C) Various other Minetest developers/contributors See [`LICENSE.md`](https://github.com/minetest-mods/cloud_items/blob/master/LICENSE.md) for more information. diff --git a/mods/cloud_items/init.lua b/mods/cloud_items/init.lua index e4ea931e..6177a586 100644 --- a/mods/cloud_items/init.lua +++ b/mods/cloud_items/init.lua @@ -1,7 +1,7 @@ --[[ Adds powerful cloud tools for Minetest. -Copyright (C) 2019-2020 David Leal (halfpacho@gmail.com) +Copyright (C) 2019-2021 David Leal (halfpacho@gmail.com) Copyright (C) Various other Minetest developers/contributors This library is free software; you can redistribute it and/or @@ -21,7 +21,7 @@ USA ========================================================================== -Dependencies: WorldEdit, default (included in Minetest Game) +Dependencies: WorldEdit, Vehicle Mash, default (included in Minetest Game) Optional dependencies: 3D Armor, Tool Ranks, More Blocks, multitools, stairs (included in Minetest Game) --]] @@ -531,7 +531,10 @@ local ship_def = { } -- Cloud ship (based on the Vehicle Mash boat) -loadfile(minetest.get_modpath(minetest.get_current_modname()) .. "/ship.lua")(table.copy(ship_def)) +local boat_enabled = minetest.settings:get_bool("cloud_items.enable_cloud_car") +if boat_enabled or boat_enabled == nil then + loadfile(minetest.get_modpath(minetest.get_current_modname()) .. "/ship.lua")(table.copy(ship_def)) +end ---------------- -- Cloud car -- @@ -573,7 +576,10 @@ local car_def = { } -- Cloud car (similar from the CAR01 from Vehicle Mash) -loadfile(minetest.get_modpath(minetest.get_current_modname()) .. "/car.lua")(table.copy(car_def)) +local car_enabled = minetest.settings:get_bool("cloud_items.enable_cloud_ship") +if car_enabled or car_enabled == nil then + loadfile(minetest.get_modpath(minetest.get_current_modname()) .. "/car.lua")(table.copy(car_def)) +end ------------- -- Crafts -- diff --git a/mods/cloud_items/settingtypes.txt b/mods/cloud_items/settingtypes.txt new file mode 100644 index 00000000..66cae191 --- /dev/null +++ b/mods/cloud_items/settingtypes.txt @@ -0,0 +1,4 @@ +# Vehicle settings + +cloud_items.enable_cloud_car (Enable/disable cloud car) bool true +cloud_items.enable_cloud_ship (Enable/disable cloud ship) bool true diff --git a/mods/mobs_redo/api.lua b/mods/mobs_redo/api.lua index d91b5080..f4b44dec 100644 --- a/mods/mobs_redo/api.lua +++ b/mods/mobs_redo/api.lua @@ -8,7 +8,7 @@ local use_cmi = minetest.global_exists("cmi") mobs = { mod = "redo", - version = "20210104", + version = "20210107", intllib = S, invis = minetest.global_exists("invisibility") and invisibility or {} } @@ -572,7 +572,8 @@ function mob_class:attempt_flight_correction(override) local flyable_nodes = minetest.find_nodes_in_area( {x = pos.x - 1, y = pos.y - 1, z = pos.z - 1}, - {x = pos.x + 1, y = pos.y + 1, z = pos.z + 1}, searchnodes) + {x = pos.x + 1, y = pos.y + 0, z = pos.z + 1}, searchnodes) + -- pos.y + 0 hopefully fixes floating swimmers if #flyable_nodes < 1 then return false diff --git a/mods/stamina/init.lua b/mods/stamina/init.lua index 4231e0d8..cdccd884 100644 --- a/mods/stamina/init.lua +++ b/mods/stamina/init.lua @@ -1,7 +1,8 @@ stamina = {players = {}} -STAMINA_TICK = 800 -- time in seconds after that 1 stamina point is taken +STAMINA_TICK = tonumber(minetest.settings:get("stamina_tick")) or 800 + -- time in seconds after that 1 stamina point is taken STAMINA_TICK_MIN = 4 -- stamina ticks won't reduce stamina below this level STAMINA_HEALTH_TICK = 4 -- time in seconds after player gets healed/damaged STAMINA_MOVE_TICK = 0.5 -- time in seconds after the movement is checked @@ -204,11 +205,7 @@ end -- Time based stamina functions -local stamina_timer = 0 -local health_timer = 0 -local action_timer = 0 -local poison_timer = 0 -local drunk_timer = 0 +local stamina_timer, health_timer, action_timer, poison_timer, drunk_timer = 0,0,0,0,0 local function stamina_globaltimer(dtime) @@ -230,11 +227,13 @@ local function stamina_globaltimer(dtime) if stamina.players[name] and stamina.players[name].drunk then --- play burp sound every 20 seconds when drunk -local num = stamina.players[name].drunk -if num and num > 0 and math.floor(num / 20) == num / 20 then - minetest.sound_play("stamina_burp", {to_player = name, gain = 0.7}, true) -end + -- play burp sound every 20 seconds when drunk + local num = stamina.players[name].drunk + + if num and num > 0 and math.floor(num / 20) == num / 20 then + minetest.sound_play("stamina_burp", + {to_player = name, gain = 0.7}, true) + end stamina.players[name].drunk = stamina.players[name].drunk - 1 @@ -287,7 +286,7 @@ end and stamina.players[name].poisoned then player:hud_change(stamina.players[name].hud_id, - "text", "stamina_hud_fg.png") + "text", "stamina_hud_fg.png") stamina.players[name].poisoned = nil end @@ -357,7 +356,7 @@ end maxsize = 1.0, vertical = false, collisiondetection = false, - texture = "default_dirt.png", + texture = "default_dirt.png" }) end @@ -478,8 +477,7 @@ function stamina.eat(hp_change, replace_with_item, itemstack, user, pointed_thin elseif hp_change < 0 then -- assume hp_change < 0 - user:hud_change(stamina.players[name].hud_id, "text", - "stamina_hud_poison.png") + user:hud_change(stamina.players[name].hud_id, "text", "stamina_hud_poison.png") stamina.players[name].poisoned = -hp_change end @@ -513,12 +511,14 @@ function stamina.eat(hp_change, replace_with_item, itemstack, user, pointed_thin maxexptime = 1, minsize = 1, maxsize = 2, - texture = texture, + texture = texture }) - -- if player drinks bucket of milk then stop poison and being drunk - if itemstack:get_name() == "mobs:bucket_milk" - or itemstack:get_name() == "mobs:glass_milk" then + -- if player drinks milk then stop poison and being drunk + local item_name = itemstack:get_name() or "" + if item_name == "mobs:bucket_milk" + or item_name == "mobs:glass_milk" + or item_name == "farming:soy_milk" then stamina.players[name].poisoned = 0 stamina.players[name].drunk = 0 @@ -556,11 +556,11 @@ function stamina.eat(hp_change, replace_with_item, itemstack, user, pointed_thin stamina.players[name].units = 0 user:hud_change(stamina.players[name].hud_id, "text", - "stamina_hud_poison.png") + "stamina_hud_poison.png") minetest.chat_send_player(name, minetest.get_color_escape_sequence("#1eff00") - .. "You suddenly feel tipsy!") + .. "You suddenly feel tipsy!") end end @@ -615,8 +615,7 @@ and minetest.settings:get_bool("enable_stamina") ~= false then if stamina.players[name].poisoned or stamina.players[name].drunk then - player:hud_change(stamina.players[name].hud_id, - "text", "stamina_hud_fg.png") + player:hud_change(stamina.players[name].hud_id, "text", "stamina_hud_fg.png") end stamina.players[name].exhaustion = 0 diff --git a/mods/stamina/settingtypes.txt b/mods/stamina/settingtypes.txt index 62ac5894..47383321 100644 --- a/mods/stamina/settingtypes.txt +++ b/mods/stamina/settingtypes.txt @@ -3,3 +3,5 @@ sprint (Enable sprint) bool true sprint_particles (Enable sprint particles) bool true enable_stamina (Enable stamina/hunger) bool true + +stamina_tick (Time in seconds after which 1 saturation point is taken) float 800 diff --git a/mods/vehicle_mash/LICENSE.md b/mods/vehicle_mash/LICENSE.md index 28b94f5d..ef0ce4e6 100644 --- a/mods/vehicle_mash/LICENSE.md +++ b/mods/vehicle_mash/LICENSE.md @@ -1,5 +1,8 @@ # Credit where credit is due +Copyright (C) 2015-2016 blert2112 and contributors +Copyright (C) 2019-2021 Panquesito7 and contributors + - Black, Blue, Brown, Cyan, Dark Green, Dark Grey, Green, Grey, Magenta, Orange, Pink, Red, Violet, White, Yellow, Hot Rod, Nyan Ride, Oerkki Bliss, and Road Master from: "Car" by Esteban - - License: diff --git a/mods/vehicle_mash/README.md b/mods/vehicle_mash/README.md index 1346d5cb..e4633d7e 100755 --- a/mods/vehicle_mash/README.md +++ b/mods/vehicle_mash/README.md @@ -1,7 +1,7 @@ # Vehicle Mash [![Build status](https://github.com/minetest-mods/vehicle_mash/workflows/build/badge.svg)](https://github.com/minetest-mods/vehicle_mash/actions) [![ContentDB](https://content.minetest.net/packages/Panquesito7/vehicle_mash/shields/downloads/)](https://content.minetest.net/packages/Panquesito7/vehicle_mash/) - Current version: 2.2.2 -- By [blert2112](https://github.com/blert2112), and improvements by [Panquesito7](https://github.com/Panquesito7). +- By [blert2112](https://github.com/blert2112), and handed over to [Panquesito7](https://github.com/Panquesito7). ![Screenshot](https://raw.githubusercontent.com/minetest-mods/vehicle_mash/master/screenshot.png) @@ -43,6 +43,9 @@ For further information or help, see:\ ## License +Copyright (C) 2015-2016 blert2112 and contributors +Copyright (C) 2019-2021 Panquesito7 and contributors + All licenses of previous works, of course, apply. (see credits below) As far as the work I did... It's really just a fork of a fork of a fork of a fork, tossed it all into a blender and spun it on puree for a bit. Baked it for a while and set it on the counter to cool. What I mean is, make what you will of it, it matters not to me.