From 971e666d3ed69096c0cfca7178be58094dd86340 Mon Sep 17 00:00:00 2001 From: bzoss Date: Sat, 16 May 2020 18:22:09 -0400 Subject: [PATCH 001/108] Initial commit to brewing formspec. --- mods/ITEMS/mcl_brewing/depends.txt | 7 + mods/ITEMS/mcl_brewing/init.lua | 235 ++++++++++++++++++ mods/ITEMS/mcl_brewing/locale/template.txt | 16 ++ mods/ITEMS/mcl_brewing/mod.conf | 1 + .../mcl_brewing/textures/mcl_brewing_base.png | Bin 0 -> 125 bytes .../textures/mcl_brewing_bottle_bg.png | Bin 0 -> 1165 bytes .../textures/mcl_brewing_fuel_bg.png | Bin 0 -> 250 bytes .../textures/mcl_brewing_inventory.png | Bin 0 -> 1491 bytes .../textures/mcl_brewing_potion_bg.png | Bin 0 -> 1172 bytes .../mcl_brewing/textures/mcl_brewing_side.png | Bin 0 -> 1353 bytes .../mcl_brewing/textures/mcl_brewing_top.png | Bin 0 -> 1606 bytes 11 files changed, 259 insertions(+) create mode 100755 mods/ITEMS/mcl_brewing/depends.txt create mode 100755 mods/ITEMS/mcl_brewing/init.lua create mode 100755 mods/ITEMS/mcl_brewing/locale/template.txt create mode 100755 mods/ITEMS/mcl_brewing/mod.conf create mode 100755 mods/ITEMS/mcl_brewing/textures/mcl_brewing_base.png create mode 100644 mods/ITEMS/mcl_brewing/textures/mcl_brewing_bottle_bg.png create mode 100755 mods/ITEMS/mcl_brewing/textures/mcl_brewing_fuel_bg.png create mode 100755 mods/ITEMS/mcl_brewing/textures/mcl_brewing_inventory.png create mode 100644 mods/ITEMS/mcl_brewing/textures/mcl_brewing_potion_bg.png create mode 100755 mods/ITEMS/mcl_brewing/textures/mcl_brewing_side.png create mode 100755 mods/ITEMS/mcl_brewing/textures/mcl_brewing_top.png diff --git a/mods/ITEMS/mcl_brewing/depends.txt b/mods/ITEMS/mcl_brewing/depends.txt new file mode 100755 index 0000000000..4c84c72900 --- /dev/null +++ b/mods/ITEMS/mcl_brewing/depends.txt @@ -0,0 +1,7 @@ +mcl_init +mcl_formspec +mcl_sounds +mcl_potions +mcl_mobitems? +mcl_core? +screwdriver? diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua new file mode 100755 index 0000000000..6342364f45 --- /dev/null +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -0,0 +1,235 @@ +local S = minetest.get_translator("mcl_brewing") + +local MAX_NAME_LENGTH = 30 +local MAX_WEAR = 65535 +local SAME_TOOL_REPAIR_BOOST = math.ceil(MAX_WEAR * 0.12) -- 12% +local MATERIAL_TOOL_REPAIR_BOOST = { + math.ceil(MAX_WEAR * 0.25), -- 25% + math.ceil(MAX_WEAR * 0.5), -- 50% + math.ceil(MAX_WEAR * 0.75), -- 75% + MAX_WEAR, -- 100% +} +local NAME_COLOR = "#FFFF4C" + +local function get_brewing_stand_formspec() + + return "size[9,8.75]".. + "background[-0.19,-0.25;9.41,9.49;mcl_brewing_inventory.png]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,4.5;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,4.5,9,3).. + "list[current_player;main;0,7.75;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7.75,9,1).. + "list[current_name;fuel;0.5,1.75;1,1;]".. + mcl_formspec.get_itemslot_bg(0.5,1.75,1,1).."image[0.5,1.75;1,1;mcl_brewing_fuel_bg.png]".. + "list[current_name;input;2.75,0.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. + "list[context;stand;4.5,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(4.5,2.5,1,1).."image[4.5,2.5;1,1;mcl_brewing_bottle_bg.png]".. + "list[context;stand;6,2.8;1,1;1]".. + mcl_formspec.get_itemslot_bg(6,2.8,1,1).."image[6,2.8;1,1;mcl_brewing_bottle_bg.png]".. + "list[context;stand;7.5,2.5;1,1;2]".. + mcl_formspec.get_itemslot_bg(7.5,2.5,1,1).."image[7.5,2.5;1,1;mcl_brewing_bottle_bg.png]".. + + "listring[current_player;main]".. + "listring[current_name;fuel]".. + "listring[current_name;input]".. + -- "listring[context;stand1]".. + -- "listring[context;stand2]".. + "listring[context;stand]" +end + + +-- Given a tool and material stack, returns how many items of the material stack +-- needs to be used up to repair the tool. +local function get_consumed_materials(tool, material) + local wear = tool:get_wear() + if wear == 0 then + return 0 + end + local health = (MAX_WEAR - wear) + local matsize = material:get_count() + local materials_used = 0 + for m=1, math.min(4, matsize) do + materials_used = materials_used + 1 + if (wear - MATERIAL_TOOL_REPAIR_BOOST[m]) <= 0 then + break + end + end + return materials_used +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. +-- Returns nil otherwise. +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 + return "tool", input1, input2 + elseif def2.type == "tool" and def2._repair_material then + return "material", input2, input1 + else + return nil + end +end + + + +-- Drop input items of brewing_stand at pos with metadata meta +local function drop_brewing_stand_items(pos, meta) + + local inv = meta:get_inventory() + + local stack = inv:get_stack("fuel", 1) + if not stack:is_empty() then + local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} + minetest.add_item(p, stack) + end + + local stack = inv:get_stack("input", 1) + if not stack:is_empty() then + local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} + minetest.add_item(p, stack) + end + + for i=1, inv:get_size("stand") do + local stack = inv:get_stack("stand", i) + if not stack:is_empty() then + local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} + minetest.add_item(p, stack) + end + end +end + + + + +local brewing_standdef = { + groups = {pickaxey=1, falling_node=1, falling_node_damage=1, crush_after_fall=1, deco_block=1, brewing_stand=1}, + tiles = {"mcl_brewing_top.png^[transformR90", "mcl_brewing_base.png", "mcl_brewing_side.png"}, + paramtype = "light", + sunlight_propagates = true, + is_ground_content = false, + paramtype2 = "facedir", + drawtype = "nodebox", + 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 + } + }, + sounds = mcl_sounds.node_sound_metal_defaults(), + _mcl_blast_resistance = 1200, + _mcl_hardness = 5, + _mcl_after_falling = damage_brewing_stand_by_falling, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + local meta = minetest.get_meta(pos) + local meta2 = meta + meta:from_table(oldmetadata) + drop_brewing_stand_items(pos, meta) + meta:from_table(meta2:to_table()) + end, + + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + else + return stack:get_count() + end + end, + + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + else + return stack:get_count() + end + end, + -- allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + -- local name = player:get_player_name() + -- if minetest.is_protected(pos, name) then + -- minetest.record_protection_violation(pos, name) + -- return 0 + -- end + -- end, + + on_metadata_inventory_put = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + minetest.get_node_timer(pos):start(1.0) + --some code here to enforce only potions getting placed on stands + end, + + on_metadata_inventory_take = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + end, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("input", 1) + inv:set_size("fuel", 1) + inv:set_size("stand", 3) + -- inv:set_size("stand2", 1) + -- inv:set_size("stand3", 1) + local form = get_brewing_stand_formspec() + meta:set_string("formspec", form) + end, + + on_receive_fields = function(pos, formname, fields, sender) + local sender_name = sender:get_player_name() + if minetest.is_protected(pos, sender_name) then + minetest.record_protection_violation(pos, sender_name) + return + end + + end, +} +if minetest.get_modpath("screwdriver") then + brewing_standdef.on_rotate = screwdriver.rotate_simple +end + +brewing_standdef.description = S("Brewing Stand") +brewing_standdef._doc_items_longdesc = S("The stand allows you to brew potions!") +brewing_standdef._doc_items_usagehelp = +S("To use an brewing_stand, rightclick it. An brewing_stand has 2 input slots (on the left) and one output slot.").."\n".. +S("To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.").."\n".. +S("There are two possibilities to repair tools (and armor):").."\n".. +S("• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.").."\n".. +S("• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.").."\n".. +S("Armor counts as a tool. It is possible to repair and rename a tool in a single step.").."\n\n".. +S("The brewing_stand has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the brewing_stand gets damaged. brewing_stand also have a chance of being damaged when they fall by more than 1 block. If a very damaged brewing_stand is damaged again, it is destroyed.") +brewing_standdef._tt_help = S("Repair and rename items") + +minetest.register_node("mcl_brewing:stand", brewing_standdef) + +if minetest.get_modpath("mcl_core") then + minetest.register_craft({ + output = "mcl_brewing:stand", + recipe = { + { "", "mcl_mobitems:blaze_rod", "" }, + { "mcl_core:stone_smooth", "mcl_core:stone_smooth", "mcl_core:stone_smooth" }, + } + }) +end + + +-- Legacy +minetest.register_lbm({ + label = "Update brewing_stand formspecs (0.60.0", + name = "mcl_brewing:update_formspec_0_60_0", + --nodenames = { "group:brewing_stand" }, + run_at_every_load = false, + action = function(pos, node) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", get_brewing_stand_formspec()) + end, +}) diff --git a/mods/ITEMS/mcl_brewing/locale/template.txt b/mods/ITEMS/mcl_brewing/locale/template.txt new file mode 100755 index 0000000000..ebc741c005 --- /dev/null +++ b/mods/ITEMS/mcl_brewing/locale/template.txt @@ -0,0 +1,16 @@ +# textdomain: mcl_anvils +Set Name= +Repair and Name= +Inventory= +Anvil= +The anvil allows you to repair tools and armor, and to give names to items. It has a limited durability, however. Don't let it fall on your head, it could be quite painful!= +To use an anvil, rightclick it. An anvil has 2 input slots (on the left) and one output slot.= +To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.= +There are two possibilities to repair tools (and armor):= +• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.= +• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.= +Armor counts as a tool. It is possible to repair and rename a tool in a single step.= +The anvil has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the anvil gets damaged. Anvils also have a chance of being damaged when they fall by more than 1 block. If a very damaged anvil is damaged again, it is destroyed.= +Slightly Damaged Anvil= +Very Damaged Anvil= +Repair and rename items= diff --git a/mods/ITEMS/mcl_brewing/mod.conf b/mods/ITEMS/mcl_brewing/mod.conf new file mode 100755 index 0000000000..de164abf92 --- /dev/null +++ b/mods/ITEMS/mcl_brewing/mod.conf @@ -0,0 +1 @@ +name = mcl_brewing diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_base.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_base.png new file mode 100755 index 0000000000000000000000000000000000000000..7e6440a57ebf4f5d2b279eae59b62ec06d329cec GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uFA^FIyyS0rlvo&)Qy0G z`kpS1Ar*|t4os23k`fY|!>kN8w6(DrY-nxsV-Vz)*df3YlEW0i>0;>o!b`=N!J?lp UfiGfC6HqIIr>mdKI;Vst004d*G5`Po literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bottle_bg.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bottle_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..c0c4fd2be15e5849c00ebadbe188f162e56cb4a9 GIT binary patch literal 1165 zcmds#ziO0G5XDbS2qv;oyI>H(Mp0}We1OOiX#br)c_vz(kVU}jqZK>SN!#vHaDcB6R2#d6+hT?3xWmu+V!N^rBw+gGYqAS#h z0SzTs?9mu)q|xGXwV|$A;hyf*{%A`T;gKHIcA;Q1!!tb#_ds#hE4reil^I#&id`t!jLIl-BxwSGi{k{1TcRWn zFu6?}Fku*nP$LF3H^G8~#%Lp5J)%C%HZ`l57(wEXwp3Zw103UTiZRii=NM8$jof>@ zBg$qR>GZUR;YJ=FdiVpY9gI#$^Eogj!o$;OHNM1u{(Ai4*@_Kc1vG(!!?Tybq*>D>&UBdiaeD`A?mNHFD0%aZU1{6X3YWnFR%m$K$w?D+S)in;lg VYTi|UCT)-#JYD@<);T3K0RY}WNXGyG literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_inventory.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_inventory.png new file mode 100755 index 0000000000000000000000000000000000000000..c62c33b9d29263539c816c0156928d01341a8027 GIT binary patch literal 1491 zcmd6n`#aMM9LK+ggM`vUmPtGQsg|EFzoGGov20K#12rLVBLM4>3@l)_;+)JIE2vs zko*?`pIMPH4n^sg?sOn}1jB5C?Y@Q=I8FN-6OIN*Azl~`B$*a&72{5`_4oukN-p)5 zKAq`hhu3x`%acAyhaPoLzxG_*9LX*ej)M2Qk2I{EVn7ugky2~FzUD8^!cl;6)&!zM z9=7%69gs=pu=|7;%sHcgwF4Y|66v5dFcd<=#k%KPcP}8_`EOj7wK3q&_56GmE7wr{ zABo?j___@fZC1>rbc?-jh8akjr4H+7a3W~+fDHg4a^MO(8k)WZQ#=i zlPu-1@2pup@CpFWr@Blc7U$@nyOck_?7&keo0MVVUDtX@nK*l446^@RTL5mU_3`J6 zV$<%Cpf|Em@h*w%mP98YPLW7x#8~Um7%YR^)Lh&MuL=7Dp-7rTuL!*nuuG7FT!5o9-D&yu&Cv*glxli|-3|i!s6rGkk z7s_NzfhEJJy`y)U*3CP$-jIvj2$K{o8V_cWi1?N66H)JL_%za9er%$Y+o)(`SA?281J9KS$1MO{fBxqlht)N0@@O5xgzd_V|rnpZvP;Nd;M4po#@ZY zcKO}%j@{7Aon`_4J<2Vtx~Jss*y7-LpU!?Ic?wF%ZggC;ofk2v?Dil>vLDba9tu literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_potion_bg.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_potion_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..818e41d4b8bf2c2adb942112951b8a7232753acc GIT binary patch literal 1172 zcmds#v1(OO5Jh)P2qv1CG8k+GK@e@`2UOm}1VRW&EYcaoDXaooiHMrY&L+kDfkhCT zKuQY>g(>m}qJLo_!a-xSkw&XJx!$H`Wkhw5_@gaVW@M2ocA;Q1Dx=7eqzM2njuSL) ziIP0P;Sa2KFghX4=fIQ*4^N}j_!9s5>&c6k*Q6Oe-`Uy)e)#Jx!Z{}AI7f$w%u78@p{QlwRUuSdY or<5xPcYhvDKiqhIaOu_e3p)S(^~dSv+)20Im~Krz-hcG=50BzPYXATM literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_side.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_side.png new file mode 100755 index 0000000000000000000000000000000000000000..4203949c6f94bd44a6281a343e3d2e8399ebc77c GIT binary patch literal 1353 zcmV-P1-AN$P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bvcI+q&{nsjb2?!yE?qy%Nlm%G(?}gH@IAK$z}|q*{{84C0EH8sHJX;KwUR;L6?s8u5l-9iLZkDrd3Dd->e0_HT zU{r-rEZHV322Ve{$bM(sis$%(m>?Tt#?!*sQ|#y*Ucfs?7wk-4a=C|sj9&`=g3*$* zKF4k%bYboAeD|Tm)5QaJz1P@#+gF#J2U4EaqK>7^5fnE-DRY`f3%C{IFk3>4SYiR_ z6>M&3g*dSVrkx#E&fK}pzHmW^&Nds+TU)G5S(IRtEix!@qj9%El2noiCJI;+i0v5* zPrqsUD;(juGBhp2*kJLY(KF$1+G(iwk-E$#o>(C+I}#9K4CclYS|Eh`!c-@|v(Zi7 zm>XgR4C;hAVu9IgyNONtE4O6wEYMTq$n5FPp)Lb}2)-4;AeS8*&!X(v1Zx8`aE#z5 zBXTRwZeV~_ZDs1OE_GVeUO^yjUBIxv3YvSc5o(!vv3VqJuLqW*vj^Fc?5W+rgQM z?3^9U4bDum*c58P8tWjZ@?Z=My2e&JpWJ;h_m($O_aolyE9PiW_cxfMLEU2Rk+&zT z)jUrWnFNhpI50KRQP{eaY$N_qkDvE;tL$`~9eUpb)S&>|mX5(UeePqXj-%+lSHF8B zxVyUPnr8%x#iZ&(+0vYa1!L>7=4Z}mc&k@0>9RIyd0+kp&?J|RY?xMhHKsW;4Gj#+ zD-2HW)gCs*FVQBq{^@3!k04(ius^JndeNbWC?2B9@&aeRM#P^ezUf0n{?kqe8urNh z(BAj-+leDhY+7l89~M;NZ&&2wEfq9Or}{%1Pk5&HyX^D+Lqji9_5_U16#H)5ZZEM4 z2S&f9?KTM7i$whnP4U+~U)r4t{T$d6FVq`8>kZ9Ya(p{8hkl!mXU#&b zlD!_SV)crxo`Ss;vHNL+> z7)~t>0Iaq61M2;{;RwDA0z?=>5a*h&E3kF0NlGe_!RDqsdTTbVMNx?CN$el@bIQi= zwa3u4iw$)%u6v|QLdIIXbZN_+J(pMpUo4$+_@x)o^cnXt^d*29Xg6Gf715lM00000 LNkvXXu0mjf(hGRv literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_top.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_top.png new file mode 100755 index 0000000000000000000000000000000000000000..9c6e9bad58c438096d3e1f192f1c7ee0921a9222 GIT binary patch literal 1606 zcmV-M2D$l(P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1Y?mh319{m&|92_ho896!&Q9nA6v6Ju3UNq4t2L%omCMKobyrGD8F)9S`xZoE}X3Bf)wy~KqTy3q;o^&wP-02dR;rr*)mMQUYOJYY(@<)zaq~@DXtAZP zvDT@(&fRzEp~s#UYm?P8Yj|PqXV!4CHW+i8p1fF7vB+TpM>*lanKEV_D&sO3(15ms zGZWA`JD3}snP@dB*eYwtgPe+kF=fy-wA^uV_hRlx-hka7@n)ZxgF)T@!5j?gCUc*> z-LO{EcB9Zn(8$7psiCfgt=pVz&_Aum=iZizj!G|Q1tM^v0J}6!98j5FTvHRsHC3#{+#j4|5#7T z@LKiM`?l7~qiYeCZ^Jcuu=VMgxWlN&4M)%nnSlP*W6tNbD(V``yC)EPtX@hwT-D3V zqNx`fbPW8#z>0_IwO-lsrAIfOab2DPPLQT&GvKCY?$|e`!+|S|2ktO|59`!6zT^KJ zrHfiv+y-8IaD3zTw=Fns5eyo_E$#V|HAN|v9%nxEYD{ylgyVDp`n`v{iCT{|(K<2n z*FProZXa}A@K;Eeq{?BEesV{9_`w}>UHd^9AAVYdr`+e?>c*vqySh=r6EX`SyiUM% z3CS{Nzj9^va9Z2s0m>U5F2N4((YXri3eK+syTK6+r9I^+eb$UEG4Wa32;bRa{vGf6951U z69E94oEQKA00(qQO+^Rf1qu)h2gs}C{{R31JV``BR5;6hlRb*VFc5{mghfaYFoCqG z+@{JE>@w+g&$oLA`vl1q(yH7dl`#yAm}a-K@L%#82{Z5c&CJv0bUHC0gz)FRXSdq{ zAR?rc@ZOVB;&3=1B6MB188}-;7z%&B3u26PT}R*dJfBZgl^7#)Oaz8M132d}vjt&X z1Mo2~P}K#=IY$VA5CS6dULb^!PczG8fVL?CsOoOLg|UOSDRIu_?`>03)ekP$_}+n; zQPq#^LRIPeo~nLeX6*O-Nt@fXe#fnhh1W0<5RqJ{s;KIO=$u<@VRemWwjdTov2e9I zgE{WEbG~1$@%w zDHmZWiXw}olwJz}e183AH^<`*jo?zc1d+j-&O9}zE{4FdC+jQ{`u07*qoM6N<$ Ef(vI7VE_OC literal 0 HcmV?d00001 From 572b43e93c1eed891e2f20f6ea01327b1f0e4ecd Mon Sep 17 00:00:00 2001 From: bzoss Date: Sat, 16 May 2020 19:15:34 -0400 Subject: [PATCH 002/108] Updated brewing stand node -- needs work. --- mods/ITEMS/mcl_brewing/init.lua | 10 +++++---- mods/ITEMS/mcl_brewing/locale/template.txt | 19 +++--------------- .../mcl_brewing/textures/mcl_brewing_base.png | Bin 125 -> 191 bytes .../textures/mcl_brewing_inventory.png | Bin 1491 -> 1190 bytes .../textures/mcl_brewing_plume.png | Bin 0 -> 1249 bytes .../mcl_brewing/textures/mcl_brewing_side.png | Bin 1353 -> 0 bytes .../mcl_brewing/textures/mcl_brewing_top.png | Bin 1606 -> 0 bytes 7 files changed, 9 insertions(+), 20 deletions(-) mode change 100755 => 100644 mods/ITEMS/mcl_brewing/textures/mcl_brewing_base.png create mode 100644 mods/ITEMS/mcl_brewing/textures/mcl_brewing_plume.png delete mode 100755 mods/ITEMS/mcl_brewing/textures/mcl_brewing_side.png delete mode 100755 mods/ITEMS/mcl_brewing/textures/mcl_brewing_top.png diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 6342364f45..dd7ba14e2c 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -108,7 +108,7 @@ end local brewing_standdef = { groups = {pickaxey=1, falling_node=1, falling_node_damage=1, crush_after_fall=1, deco_block=1, brewing_stand=1}, - tiles = {"mcl_brewing_top.png^[transformR90", "mcl_brewing_base.png", "mcl_brewing_side.png"}, + tiles = {"mcl_brewing_base.png", "mcl_brewing_plume.png"}, paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -117,9 +117,11 @@ local brewing_standdef = { 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 + --TODO: add bottle hangers + {-1/16, -6/16, -1/16, 1/16, 12/16, 1/16}, -- heat plume + { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base + {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base + {-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base } }, sounds = mcl_sounds.node_sound_metal_defaults(), diff --git a/mods/ITEMS/mcl_brewing/locale/template.txt b/mods/ITEMS/mcl_brewing/locale/template.txt index ebc741c005..56cf672ac9 100755 --- a/mods/ITEMS/mcl_brewing/locale/template.txt +++ b/mods/ITEMS/mcl_brewing/locale/template.txt @@ -1,16 +1,3 @@ -# textdomain: mcl_anvils -Set Name= -Repair and Name= -Inventory= -Anvil= -The anvil allows you to repair tools and armor, and to give names to items. It has a limited durability, however. Don't let it fall on your head, it could be quite painful!= -To use an anvil, rightclick it. An anvil has 2 input slots (on the left) and one output slot.= -To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.= -There are two possibilities to repair tools (and armor):= -• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.= -• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.= -Armor counts as a tool. It is possible to repair and rename a tool in a single step.= -The anvil has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the anvil gets damaged. Anvils also have a chance of being damaged when they fall by more than 1 block. If a very damaged anvil is damaged again, it is destroyed.= -Slightly Damaged Anvil= -Very Damaged Anvil= -Repair and rename items= +# textdomain: mcl_brewing +Brewing Stand= +The brewing stand allows the creating of potions for the benefit of various effects. Stay tuned for developments, as you can only view the stand and interact with it, but not create potions. diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_base.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_base.png old mode 100755 new mode 100644 index 7e6440a57ebf4f5d2b279eae59b62ec06d329cec..8831ffb9b5217e3aceb2526ed2734a9dd91edd08 GIT binary patch delta 174 zcmV;f08#&azX6aKe*^;n008aX;!*$r01{A4R7HMtafg6>rI(PCiGy%#W@}+#yjw1V z0001JNklyY;yf@ItjDor7zQ!P2`rMCSKm7mCD50a9J9j`yU8wF!m-20G c4m+yj3*K`MW5R3Zy#N3J07*qoM6N<$f{fltNdN!< delta 107 zcmdnbSUW)?m5G^wfgx$G_$MI68Q>G*s;sQ6qoZSLYWh=4-3TbC@9E+gQo)$)z!VuQ zDIu{r%*tRxTN|6fhSoMe20?C#9Re&NIZP3pE{4u8yi|-CEc*Ep_#);s0ktxCy85}S Ib4q9e0FaOye*gdg diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_inventory.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_inventory.png index c62c33b9d29263539c816c0156928d01341a8027..ee8fff1a66c03b5d20fd7da50c48d6d8b98c0dd0 100755 GIT binary patch literal 1190 zcmeAS@N?(olHy`uVBq!ia0vp^3xIeQ2OE&o({p|Xq&N#aB8wRq_>O=u<5X=vX$A(C z2u~Nskcv5P@18BZZ6MJ0FjbBBrBm5~)v=ASjn)(Vf>hrfNc9jeeR5XO?a;vw>?-04 zjQh^_q$!;|=%muZzhJ2g3&Vt&mtQVsw_P$M(FC`?7a_!@_-0U#s7* zuRrsCt#!gld%^S1H-D0^x0`?UWl7NYIo0?6-+Wj5y?j^y_pQ>G-1qy%@7=f0@2Y!} zv*4TgH}*-Uze!*At{*6Mf1_2f>Gdo3SFcHTsGs(#`kd|jUHSVq?kjt{aJ^=#Erat{ z-g9|dT92jY)Ot5w0t&QW^S^t1_v_{F&iie(G&T5J=6vhTYWr)~H`<-~87cBkV{<6a zo@BA8P0XOcIiRL8W7WBPFT+AjfB%>kmhN@!I%D!D|A5OTt8YnIRW7|c^YsVjf*iFM z^OhWcZ1}su-1qbP+|aAvznA~~^JmSUUDrzWrgz`T+rFf9!<=t-U+ps6yCdfM)>W(a z?cKX__xn73QuA8*RASnwpguU7 z_^oYIZ@&%O>2X?9DtOPlM{8@RM}1XX9{XWd-I&n&qV>@#9`>peB-3gKw zYI;qpSKX?)E1mS2(PGQu;`5z4_b>9ktt*zPICuU5*R8opP8oBSybI?EnHH#w_7f>0zIVWFp W({sjbjkXsclRaJiT-G@yGywnsMJb^G literal 1491 zcmd6n`#aMM9LK+ggM`vUmPtGQsg|EFzoGGov20K#12rLVBLM4>3@l)_;+)JIE2vs zko*?`pIMPH4n^sg?sOn}1jB5C?Y@Q=I8FN-6OIN*Azl~`B$*a&72{5`_4oukN-p)5 zKAq`hhu3x`%acAyhaPoLzxG_*9LX*ej)M2Qk2I{EVn7ugky2~FzUD8^!cl;6)&!zM z9=7%69gs=pu=|7;%sHcgwF4Y|66v5dFcd<=#k%KPcP}8_`EOj7wK3q&_56GmE7wr{ zABo?j___@fZC1>rbc?-jh8akjr4H+7a3W~+fDHg4a^MO(8k)WZQ#=i zlPu-1@2pup@CpFWr@Blc7U$@nyOck_?7&keo0MVVUDtX@nK*l446^@RTL5mU_3`J6 zV$<%Cpf|Em@h*w%mP98YPLW7x#8~Um7%YR^)Lh&MuL=7Dp-7rTuL!*nuuG7FT!5o9-D&yu&Cv*glxli|-3|i!s6rGkk z7s_NzfhEJJy`y)U*3CP$-jIvj2$K{o8V_cWi1?N66H)JL_%za9er%$Y+o)(`SA?281J9KS$1MO{fBxqlht)N0@@O5xgzd_V|rnpZvP;Nd;M4po#@ZY zcKO}%j@{7Aon`_4J<2Vtx~Jss*y7-LpU!?Ic?wF%ZggC;ofk2v?Dil>vLDba9tu diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_plume.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_plume.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb6dbbb75db0e6e8ea3c2d9995be2fbb54b2f24 GIT binary patch literal 1249 zcmds#%WIQS5XGkiqy`cd7na0=FEAiJ=+K3@X-bL-NC-`#bRoFVS-7Z*bx|#()*=d8 zK`C{F`ap1}P!ZfH6l#^iY!n0+RS*m=gl-gd|#N{d(ZsNneTd|el(XY zWQizOt5yc_yE&fD4Bn;vo0>!!Y8)FHKuN?zLZn1S ztjcPv9#A-I!lrD-=3vBCc41d`V@Fp|Lk!TM1Qzzt7}}7A7A|`jiW*BrOvJ+<+M-ew zHBk?{punc7n29;u0}5xwRouj34|xC+w-E>Y0|E{~4KYB25=X&-#?Xc|v^JcRTp)D#iHAk+n3kqzin>unt(g*-tIF6v<7EvM(VB$97022(uA*dk+Xxs!AIM5i{ zkoFi+oW?e4EXTwUB>bT*Dsztkrtt?wnrO^34Jn{f?lImJWiY06V%o`YASVwo{Dc(_ zQYT2`bHJ1k9z3O1=}Y|QuTvK%x`{eyY_Q%0#(%li8)|VyPvh*yv(=IFMEN)Ibj zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bvcI+q&{nsjb2?!yE?qy%Nlm%G(?}gH@IAK$z}|q*{{84C0EH8sHJX;KwUR;L6?s8u5l-9iLZkDrd3Dd->e0_HT zU{r-rEZHV322Ve{$bM(sis$%(m>?Tt#?!*sQ|#y*Ucfs?7wk-4a=C|sj9&`=g3*$* zKF4k%bYboAeD|Tm)5QaJz1P@#+gF#J2U4EaqK>7^5fnE-DRY`f3%C{IFk3>4SYiR_ z6>M&3g*dSVrkx#E&fK}pzHmW^&Nds+TU)G5S(IRtEix!@qj9%El2noiCJI;+i0v5* zPrqsUD;(juGBhp2*kJLY(KF$1+G(iwk-E$#o>(C+I}#9K4CclYS|Eh`!c-@|v(Zi7 zm>XgR4C;hAVu9IgyNONtE4O6wEYMTq$n5FPp)Lb}2)-4;AeS8*&!X(v1Zx8`aE#z5 zBXTRwZeV~_ZDs1OE_GVeUO^yjUBIxv3YvSc5o(!vv3VqJuLqW*vj^Fc?5W+rgQM z?3^9U4bDum*c58P8tWjZ@?Z=My2e&JpWJ;h_m($O_aolyE9PiW_cxfMLEU2Rk+&zT z)jUrWnFNhpI50KRQP{eaY$N_qkDvE;tL$`~9eUpb)S&>|mX5(UeePqXj-%+lSHF8B zxVyUPnr8%x#iZ&(+0vYa1!L>7=4Z}mc&k@0>9RIyd0+kp&?J|RY?xMhHKsW;4Gj#+ zD-2HW)gCs*FVQBq{^@3!k04(ius^JndeNbWC?2B9@&aeRM#P^ezUf0n{?kqe8urNh z(BAj-+leDhY+7l89~M;NZ&&2wEfq9Or}{%1Pk5&HyX^D+Lqji9_5_U16#H)5ZZEM4 z2S&f9?KTM7i$whnP4U+~U)r4t{T$d6FVq`8>kZ9Ya(p{8hkl!mXU#&b zlD!_SV)crxo`Ss;vHNL+> z7)~t>0Iaq61M2;{;RwDA0z?=>5a*h&E3kF0NlGe_!RDqsdTTbVMNx?CN$el@bIQi= zwa3u4iw$)%u6v|QLdIIXbZN_+J(pMpUo4$+_@x)o^cnXt^d*29Xg6Gf715lM00000 LNkvXXu0mjf(hGRv diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_top.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_top.png deleted file mode 100755 index 9c6e9bad58c438096d3e1f192f1c7ee0921a9222..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1606 zcmV-M2D$l(P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1Y?mh319{m&|92_ho896!&Q9nA6v6Ju3UNq4t2L%omCMKobyrGD8F)9S`xZoE}X3Bf)wy~KqTy3q;o^&wP-02dR;rr*)mMQUYOJYY(@<)zaq~@DXtAZP zvDT@(&fRzEp~s#UYm?P8Yj|PqXV!4CHW+i8p1fF7vB+TpM>*lanKEV_D&sO3(15ms zGZWA`JD3}snP@dB*eYwtgPe+kF=fy-wA^uV_hRlx-hka7@n)ZxgF)T@!5j?gCUc*> z-LO{EcB9Zn(8$7psiCfgt=pVz&_Aum=iZizj!G|Q1tM^v0J}6!98j5FTvHRsHC3#{+#j4|5#7T z@LKiM`?l7~qiYeCZ^Jcuu=VMgxWlN&4M)%nnSlP*W6tNbD(V``yC)EPtX@hwT-D3V zqNx`fbPW8#z>0_IwO-lsrAIfOab2DPPLQT&GvKCY?$|e`!+|S|2ktO|59`!6zT^KJ zrHfiv+y-8IaD3zTw=Fns5eyo_E$#V|HAN|v9%nxEYD{ylgyVDp`n`v{iCT{|(K<2n z*FProZXa}A@K;Eeq{?BEesV{9_`w}>UHd^9AAVYdr`+e?>c*vqySh=r6EX`SyiUM% z3CS{Nzj9^va9Z2s0m>U5F2N4((YXri3eK+syTK6+r9I^+eb$UEG4Wa32;bRa{vGf6951U z69E94oEQKA00(qQO+^Rf1qu)h2gs}C{{R31JV``BR5;6hlRb*VFc5{mghfaYFoCqG z+@{JE>@w+g&$oLA`vl1q(yH7dl`#yAm}a-K@L%#82{Z5c&CJv0bUHC0gz)FRXSdq{ zAR?rc@ZOVB;&3=1B6MB188}-;7z%&B3u26PT}R*dJfBZgl^7#)Oaz8M132d}vjt&X z1Mo2~P}K#=IY$VA5CS6dULb^!PczG8fVL?CsOoOLg|UOSDRIu_?`>03)ekP$_}+n; zQPq#^LRIPeo~nLeX6*O-Nt@fXe#fnhh1W0<5RqJ{s;KIO=$u<@VRemWwjdTov2e9I zgE{WEbG~1$@%w zDHmZWiXw}olwJz}e183AH^<`*jo?zc1d+j-&O9}zE{4FdC+jQ{`u07*qoM6N<$ Ef(vI7VE_OC From 228fc4b6ea2b3ff52fe6ef58a480a90eecbc8c60 Mon Sep 17 00:00:00 2001 From: bzoss Date: Tue, 19 May 2020 17:31:07 -0400 Subject: [PATCH 003/108] Updated node to add bottles. TODO: Update node for bottle placement. --- mods/ITEMS/mcl_brewing/init.lua | 39 +++++++++++++++++- .../textures/mcl_brewing_plume.png | Bin 1249 -> 0 bytes .../mcl_brewing/textures/mcl_brewing_side.png | Bin 0 -> 342 bytes .../mcl_brewing/textures/mcl_brewing_top.png | Bin 0 -> 403 bytes 4 files changed, 37 insertions(+), 2 deletions(-) delete mode 100644 mods/ITEMS/mcl_brewing/textures/mcl_brewing_plume.png create mode 100644 mods/ITEMS/mcl_brewing/textures/mcl_brewing_side.png create mode 100644 mods/ITEMS/mcl_brewing/textures/mcl_brewing_top.png diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index dd7ba14e2c..4ba2b7e030 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -108,7 +108,12 @@ end local brewing_standdef = { groups = {pickaxey=1, falling_node=1, falling_node_damage=1, crush_after_fall=1, deco_block=1, brewing_stand=1}, - tiles = {"mcl_brewing_base.png", "mcl_brewing_plume.png"}, + tiles = {"mcl_brewing_top.png", --top + "mcl_brewing_base.png", --bottom + "mcl_brewing_side.png", --right + "mcl_brewing_side.png", --left + "mcl_brewing_side.png", --back + "mcl_brewing_side.png^[transformFX"}, --front paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -118,10 +123,40 @@ local brewing_standdef = { type = "fixed", fixed = { --TODO: add bottle hangers - {-1/16, -6/16, -1/16, 1/16, 12/16, 1/16}, -- heat plume + {-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base {-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base + + {-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1 + {-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1 + {-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1 + {-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1 + {-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1 + + {-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1 + {-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1 + {-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1 + {-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1 + + + {7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2 + {6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2 + {5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2 + {4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2 + {3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2 + + {5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2 + {4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2 + {3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2 + {2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2 + + {0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3 + {0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3 + + {0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3 + {0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3 + {0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3 } }, sounds = mcl_sounds.node_sound_metal_defaults(), diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_plume.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_plume.png deleted file mode 100644 index 2fb6dbbb75db0e6e8ea3c2d9995be2fbb54b2f24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1249 zcmds#%WIQS5XGkiqy`cd7na0=FEAiJ=+K3@X-bL-NC-`#bRoFVS-7Z*bx|#()*=d8 zK`C{F`ap1}P!ZfH6l#^iY!n0+RS*m=gl-gd|#N{d(ZsNneTd|el(XY zWQizOt5yc_yE&fD4Bn;vo0>!!Y8)FHKuN?zLZn1S ztjcPv9#A-I!lrD-=3vBCc41d`V@Fp|Lk!TM1Qzzt7}}7A7A|`jiW*BrOvJ+<+M-ew zHBk?{punc7n29;u0}5xwRouj34|xC+w-E>Y0|E{~4KYB25=X&-#?Xc|v^JcRTp)D#iHAk+n3kqzin>unt(g*-tIF6v<7EvM(VB$97022(uA*dk+Xxs!AIM5i{ zkoFi+oW?e4EXTwUB>bT*Dsztkrtt?wnrO^34Jn{f?lImJWiY06V%o`YASVwo{Dc(_ zQYT2`bHJ1k9z3O1=}Y|QuTvK%x`{eyY_Q%0#(%li8)|VyPvh*yv(=IFMEN)IbjLk}*!hKoCXWAV-enkjjb`khp{ofUl5-f&-9CP|#6u zf^Yy%zyVC3^rrN>E8;mUo`de5fE6DLxF~`YOJMhOW20lg+2t4kRn>Mj6SSg> zV@)u*tZlosEzre@JlEe^M1k o43e1T@*RL)+GE&HjX-n$0hVQYo-Av_(f|Me07*qoM6N<$g5_wAqW}N^ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_top.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_top.png new file mode 100644 index 0000000000000000000000000000000000000000..4ed94d460a248da9fc44e73762782d2e4b26d4e1 GIT binary patch literal 403 zcmV;E0c`$>P)Lk}*%hP!xqfh@>{H4E`IphB%Vo;N)*`F)@Y#1jIyQ zOc-$C4>&nU!f41N42GGBfq_wL7)W0pq(dD@AC#18@J#RJ-h1x3CnrS=9;&54c@opM zuuX&G>=EP1l)I;9YP&ZbM*uKiNB}NxN{lDdU2X9M%9Hrg$2N_fgTE@sSQ!BN{k~T7 zXM%9Rb!Yo4$R1jlwx!>DLkJNh)en-2L6rdEBre!_!oRU8J?V_p?e$eKU&x42xqJb~ zaU!V`LIk~TNB={E(*VBoG3}M>xqN}m#t@_7fLy*1$%JhhD}pdIC(bFoZb!3k!c$8= z#5-r_7n;OV%e9HcN}bVgz Date: Sat, 23 May 2020 16:39:55 -0400 Subject: [PATCH 004/108] Updated Formspec background. Established initial brewing timer framework. --- mods/ITEMS/mcl_brewing/init.lua | 291 ++++++++++++++---- .../textures/mcl_brewing_bubbles.png | Bin 0 -> 193 bytes .../textures/mcl_brewing_bubbles_active.png | Bin 0 -> 194 bytes .../textures/mcl_brewing_burner.png | Bin 0 -> 147 bytes .../textures/mcl_brewing_burner_active.png | Bin 0 -> 157 bytes .../textures/mcl_brewing_inventory.png | Bin 1190 -> 1033 bytes mods/ITEMS/mcl_potions/init.lua | 8 + 7 files changed, 244 insertions(+), 55 deletions(-) create mode 100644 mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubbles.png create mode 100644 mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubbles_active.png create mode 100644 mods/ITEMS/mcl_brewing/textures/mcl_brewing_burner.png create mode 100644 mods/ITEMS/mcl_brewing/textures/mcl_brewing_burner_active.png diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 4ba2b7e030..0e22b472fb 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -1,20 +1,12 @@ -local S = minetest.get_translator("mcl_brewing") - -local MAX_NAME_LENGTH = 30 -local MAX_WEAR = 65535 -local SAME_TOOL_REPAIR_BOOST = math.ceil(MAX_WEAR * 0.12) -- 12% -local MATERIAL_TOOL_REPAIR_BOOST = { - math.ceil(MAX_WEAR * 0.25), -- 25% - math.ceil(MAX_WEAR * 0.5), -- 50% - math.ceil(MAX_WEAR * 0.75), -- 75% - MAX_WEAR, -- 100% -} +local S = minetest.get_translator("mcl_brewing_stand") local NAME_COLOR = "#FFFF4C" -local function get_brewing_stand_formspec() +local function active_brewing_formspec(fuel_percent, item_percent) return "size[9,8.75]".. - "background[-0.19,-0.25;9.41,9.49;mcl_brewing_inventory.png]".. + "background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory.png^[lowpart:".. + (item_percent)..":mcl_brewing_inventory_active.png]".. + -- "background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory_active.png]".. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. @@ -34,49 +26,230 @@ local function get_brewing_stand_formspec() "listring[current_player;main]".. "listring[current_name;fuel]".. "listring[current_name;input]".. - -- "listring[context;stand1]".. - -- "listring[context;stand2]".. "listring[context;stand]" end +local brewing_formspec = "size[9,8.75]".. + "background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory.png]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. + "list[current_player;main;0,4.5;9,3;9]".. + mcl_formspec.get_itemslot_bg(0,4.5,9,3).. + "list[current_player;main;0,7.75;9,1;]".. + mcl_formspec.get_itemslot_bg(0,7.75,9,1).. + "list[current_name;fuel;0.5,1.75;1,1;]".. + mcl_formspec.get_itemslot_bg(0.5,1.75,1,1).."image[0.5,1.75;1,1;mcl_brewing_fuel_bg.png]".. + "list[current_name;input;2.75,0.5;1,1;]".. + mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. + "list[context;stand;4.5,2.5;1,1;]".. + mcl_formspec.get_itemslot_bg(4.5,2.5,1,1).."image[4.5,2.5;1,1;mcl_brewing_bottle_bg.png]".. + "list[context;stand;6,2.8;1,1;1]".. + mcl_formspec.get_itemslot_bg(6,2.8,1,1).."image[6,2.8;1,1;mcl_brewing_bottle_bg.png]".. + "list[context;stand;7.5,2.5;1,1;2]".. + mcl_formspec.get_itemslot_bg(7.5,2.5,1,1).."image[7.5,2.5;1,1;mcl_brewing_bottle_bg.png]".. --- Given a tool and material stack, returns how many items of the material stack --- needs to be used up to repair the tool. -local function get_consumed_materials(tool, material) - local wear = tool:get_wear() - if wear == 0 then + "image[2.7,3.33;1.28,0.41;mcl_brewing_burner.png^[lowpart:".. + (65)..":mcl_brewing_burner_active.png^[transformR270]".. + + "image[2.76,1.4;1,2.15;mcl_brewing_bubbles.png^[lowpart:".. + (65)..":mcl_brewing_bubbles_active.png]".. + + "listring[current_player;main]".. + "listring[current_name;fuel]".. + "listring[current_name;input]".. + "listring[context;stand]" + + +local function swap_node(pos, name) + local node = minetest.get_node(pos) + if node.name == name then + return + end + node.name = name + minetest.swap_node(pos, node) +end + + +local function brewing_stand_timer(pos, elapsed) + -- Inizialize metadata + local meta = minetest.get_meta(pos) + local fuel_time = meta:get_float("fuel_time") or 0 + local input_time = meta:get_float("input_time") or 0 + local input_item = meta:get_string("input_item") or "" + local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 + + local inv = meta:get_inventory() + local stand_list, fuellist + + local cookable, cooked + local fuel + + local update = true + + while update do + + update = false + + local formspec = brewing_formspec + + formspec = active_brewing_formspec(100,15) + + input_list = inv:get_list("input") + stand_list = inv:get_list("stand") + fuellist = inv:get_list("fuel") + + for i=1, inv:get_size("stand") do + local stack = inv:get_stack("stand", i) + print(stack:get_name()) + print(stack:get_count()) + end + + + -- Check if we have compatible alchemy + local aftercooked + cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = stand_list}) + cookable = cooked.time ~= 0 + + -- Check if src item has been changed + if stand_list[1]:get_name() ~= input_item then + -- Reset cooking progress in this case + input_time = 0 + input_item = stand_list[1]:get_name() + update = true + + -- Check if we have enough fuel to burn + elseif fuel_time < fuel_totaltime then + -- The furnace is currently active and has enough fuel + fuel_time = fuel_time + elapsed + -- If there is a cookable item then check if it is ready yet + if cookable then + -- Place result in dst list if done + if input_time >= cooked.time then + inv:add_item("stand", cooked.item) + inv:set_stack("input", 1, aftercooked.items[1]) + + input_time = 0 + update = true + end + + elseif input_time ~= 0 then + -- If output slot is occupied, stop cooking + input_time = 0 + update = true + end + else + -- Furnace ran out of fuel + if cookable then + -- We need to get new fuel + local afterfuel + fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + + if fuel.time == 0 then + -- No valid fuel in fuel list + fuel_totaltime = 0 + input_time = 0 + else + -- Take fuel from fuel list + inv:set_stack("fuel", 1, afterfuel.items[1]) + update = true + fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime) + input_time = input_time + elapsed + end + else + -- We don't need to get new fuel since there is no cookable item + fuel_totaltime = 0 + input_time = 0 + end + fuel_time = 0 + end + + elapsed = 0 + end + + if fuel and fuel_totaltime > fuel.time then + fuel_totaltime = fuel.time + end + if stand_list[1]:is_empty() then + input_time = 0 + end + + -- + -- Update formspec and node + -- + local formspec = brewing_formspec + formspec = active_brewing_formspec(100,85) + local item_state + local item_percent = 0 + + if cookable then + item_percent = math.floor(input_time / cooked.time * 100) + end + + local result = false + + if fuel_totaltime ~= 0 then + local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) + formspec = active_brewing_formspec(fuel_percent, item_percent) + swap_node(pos, "mcl_brewing:stand_active") + -- make sure timer restarts automatically + result = true + else + swap_node(pos, "mcl_brewing:stand") + -- stop timer on the inactive stand + minetest.get_node_timer(pos):stop() + end + + -- + -- Set meta values + -- + meta:set_float("fuel_totaltime", fuel_totaltime) + meta:set_float("fuel_time", fuel_time) + meta:set_float("input_time", input_time) + meta:set_string("input_item", stand_list[1]:get_name()) + meta:set_string("formspec", formspec) + + return result +end + + +local function allow_metadata_inventory_put(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) return 0 end - local health = (MAX_WEAR - wear) - local matsize = material:get_count() - local materials_used = 0 - for m=1, math.min(4, matsize) do - materials_used = materials_used + 1 - if (wear - MATERIAL_TOOL_REPAIR_BOOST[m]) <= 0 then - break + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if listname == "fuel" then + + -- Test stack with size 1 because we burn one fuel at a time + local teststack = ItemStack(stack) + teststack:set_count(1) + local output, decremented_input = minetest.get_craft_result({method="fuel", width=1, items={teststack}}) + if output.time ~= 0 then + -- Only allow to place 1 item if fuel get replaced by recipe. + -- This is the case for lava buckets. + local replace_item = decremented_input.items[1] + if replace_item:is_empty() then + -- For most fuels, just allow to place everything + return stack:get_count() + else + if inv:get_stack(listname, index):get_count() == 0 then + return 1 + else + return 0 + end + end + else + return 0 end - end - return materials_used -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. --- Returns nil otherwise. -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 - return "tool", input1, input2 - elseif def2.type == "tool" and def2._repair_material then - return "material", input2, input1 - else - return nil + elseif listname == "input" then + return stack:get_count() + elseif listname == "stand" then + return 0 end end - -- Drop input items of brewing_stand at pos with metadata meta local function drop_brewing_stand_items(pos, meta) @@ -106,7 +279,7 @@ end -local brewing_standdef = { +local brewing_stand_def = { groups = {pickaxey=1, falling_node=1, falling_node_damage=1, crush_after_fall=1, deco_block=1, brewing_stand=1}, tiles = {"mcl_brewing_top.png", --top "mcl_brewing_base.png", --bottom @@ -191,6 +364,7 @@ local brewing_standdef = { return stack:get_count() end end, + -- allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) -- local name = player:get_player_name() -- if minetest.is_protected(pos, name) then @@ -217,7 +391,7 @@ local brewing_standdef = { inv:set_size("stand", 3) -- inv:set_size("stand2", 1) -- inv:set_size("stand3", 1) - local form = get_brewing_stand_formspec() + local form = brewing_formspec meta:set_string("formspec", form) end, @@ -227,16 +401,19 @@ local brewing_standdef = { minetest.record_protection_violation(pos, sender_name) return end - end, + + on_timer = brewing_stand_timer, } + + if minetest.get_modpath("screwdriver") then - brewing_standdef.on_rotate = screwdriver.rotate_simple + brewing_stand_def.on_rotate = screwdriver.rotate_simple end -brewing_standdef.description = S("Brewing Stand") -brewing_standdef._doc_items_longdesc = S("The stand allows you to brew potions!") -brewing_standdef._doc_items_usagehelp = +brewing_stand_def.description = S("Brewing Stand") +brewing_stand_def._doc_items_longdesc = S("The stand allows you to brew potions!") +brewing_stand_def._doc_items_usagehelp = S("To use an brewing_stand, rightclick it. An brewing_stand has 2 input slots (on the left) and one output slot.").."\n".. S("To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.").."\n".. S("There are two possibilities to repair tools (and armor):").."\n".. @@ -244,9 +421,13 @@ S("• Tool + Tool: Place two tools of the same type in the input slots. The “ S("• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.").."\n".. S("Armor counts as a tool. It is possible to repair and rename a tool in a single step.").."\n\n".. S("The brewing_stand has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the brewing_stand gets damaged. brewing_stand also have a chance of being damaged when they fall by more than 1 block. If a very damaged brewing_stand is damaged again, it is destroyed.") -brewing_standdef._tt_help = S("Repair and rename items") +brewing_stand_def._tt_help = S("Repair and rename items") -minetest.register_node("mcl_brewing:stand", brewing_standdef) +minetest.register_node("mcl_brewing:stand", brewing_stand_def) + +local brewing_stand_active_def = brewing_stand_def +brewing_stand_active_def.light_source = 8 +minetest.register_node("mcl_brewing:stand_active", brewing_stand_active_def) if minetest.get_modpath("mcl_core") then minetest.register_craft({ @@ -267,6 +448,6 @@ minetest.register_lbm({ run_at_every_load = false, action = function(pos, node) local meta = minetest.get_meta(pos) - meta:set_string("formspec", get_brewing_stand_formspec()) + meta:set_string("formspec", brewing_formspec) end, }) diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubbles.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubbles.png new file mode 100644 index 0000000000000000000000000000000000000000..780352408fffc2731422e4d54013eb8674de0253 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^d_XME!3HF+ANuniNO2Z;L>2?ZkAN`aRBb+KpkT45 zi(`mI@6$2dx`fogckvDtPBMt%Q)%UVwZiaQJ2?}Pn-Z|1R|+3ydu zw+jerAOFra|H%#6Y4P=CTe{c&Txx%0@=Ti-8K176^*t}KaN4XICby>k^{YPc&FZ*z o_fY)VOJ;}O*vT0`w@R~MT*jR%>~?o^6wrDGPgg&ebxsLQ04&8yumAu6 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubbles_active.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubbles_active.png new file mode 100644 index 0000000000000000000000000000000000000000..2a367807ac6d5024ee9a392ede39401ffc9c2c55 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^d_XME!3HF+ANuniNO2Z;L>2?ZkAN`aRBb+KpkRro zi(`mI@6$<+d<_O1EaLJ<|DXRGVr%Ny$T6k)*iNRCMhqo~&TKZ>;=w3OnQe pZqpjkLq)gP?!GaaXLXQIyoCO|{#S9F5M?jcysy3fAP|(%W z#W6%;>f4Kkj0Y414jlL`<;>1Ep@k)9!5iy~WeF)c$5MP8($ua*9h6W`I%%o?VsGoCO|{#S9F5M?jcysy3fAP|)Ag z#W6%;>f4JOIU5W_7%qxeADlZ!X)lMLN(XZaXStBfgJ@S>9o@a3*6m>t6r51Zwsgvr zRW{c+dv5d1THdns{kspxAX!0n03%pQb^{Z3 z6y3p%`?_4Vv571{IH!sMkJc}2MW5tAIs^b#X1CkL>NZ8&Q?xlnyH(p$v`dfrL0|d_ z=;~{#elPv~_xUq-2U2RDi2MCsG#|g;@5OGni`8@0^Uc@R?|)bSrv7+ayF>cetkYJn zt*?*jlUY{;H&1NajMMj;NB8^M9n#;vI*)4prv6f`dIoIHQf<#w&*$!2Q(s@}meALn zRy_cRY8#yOXd4=zQ)^oaY~88{VAuMo{&;=;RDbQGHXjYlX1hb$Y^&eb*Sx50HBV4kmcMGF>*Q^%&R8!$ z0Q+Ww`boOoZle!)S(bm>jxolMkB{*6^;INZ84F4bcFwWZwx;SkQ}a|q$T$a>}y z$d>Dnz}BKs1h352qEQ5|P*-Gy5W@9(4I!*68b$DmEG-(pzrR;eheWm(jUsr3=8nb? z)*1CAuz$1&&Q(VQFT~cOQ3S8h+!4IiIwUYOvU1fC!7pZO(I|pfXzpkX!7lh^<%%p3 zOslO$V_%*9elLQTs%_Rd91h`fxfE5TttlFFydN^?i?mejq>SL-^ka;FQgr5#-puHc zqi;E-`2Iv$mf?E6wjR?ELO7jH*=D2^?&N8^)tA7BlvtickYrI zq548~eQ~{3F~<1$`I#+(r{0~WdOwT!T4q<=)@Hs{55APD2o4>`q>A98C{}UIW*>lE zJG$z*5M1o6`x#t=cBecrG){8&YYM3%Ye=0O$1K(R$+8RXGIU25V~lTaZ<`p1Ihg%M zsDFN9o44cf_;)aFX%@^;Bgafz)yh$4GOrZDx#S#xDTrWZHR~>T%tckZV3HHT>51SG zL@=|*TGvHWpSpcsjA{Nl>gI`HW;N#1y&`yhzMBg`*iOd{Q;9f1UDHVgb@A(Jg}Ym`?_WH P00000NkvXXu0mjf1>fRr delta 1079 zcmV-71jze|2&M^;IDZ6KNkl5QgDpCJpIAcEGD$fn9++kWNx1?!aY8 z7j@*#Ax6T%@CPIpAOXJ5jAkOq!9pa251^$)1OSkk)9Iw{7NhMLZN_NVwH>2fjOZTp zy`O-gzFPHr@2`K%@2xvv$v+X#=d2y-}oO|B?*?;bR_jkIF_q7|+N54*A zy}rIq)kk7O5$vDXz8PoiXQu9twHwmku{u*V*VNyutY<)fmg;-XJ)gR7zOlY`?V+zJ zWjz2x^$pH$w1viJY<)|C(q%mWht^Ns$GhvN?$1uOIW;i-c0=0it3TG)u|CZCSrqOl zvsDbdV-{Mn1Ahhp006)yB$%qs-sx6VHT(FMR%c4q*8yYlPf*h|tJ)Ykd8O5v>+l0` zY$oWQq{rhi`+zr1^RI1H)%W*z`TYE>{JPe4E|-hkZnva$u$=bY>bf?)xLnt@s;a)d zy{WtJZZYbd&*!9dkO6nnsPiAwr?H_E;?_*6sut^~Qh(|kehp|zRdr}_?@r{B#eeB_ zU_ey|*ID|*BC<-W10(Ka3~`I~wI{5!I;;T=4MkSlwsO5*MdWW}Ex80zavc~bEgFg7 z%#;?5L~w?NB1=T%e!q)IUeQPdXJl{D`2GEzMV&*i{x#H4jgq2~2sTpJwLTt?O4a5! z17o(1Mt_k!qrP}+-=(27_7uUX>JY&@QCc(-!I8OWwrq3j2+p<6;kanAjONhDN>zsl z-Z{&`CsJNC62TeTIvPdT1s_(b$RdI>#D!?vI(1zW!J$%Kh<5e-$J(})+wE4lNXsc2 zQ@ozyt$mkT^&zKS@S1+i@ynt!Q${mmgjIci=6{RvHN_AX-=AojM(+1}?=ck-xm+&E zW+aQ(ljKWDOFQZgs%3O`FF>b?WlKMOAC2Ja^*Xpq#td$zQeFN9Xn&^b-cK3Ls;VC! zAITy(_U_c`_3YwnnL`7iGdnFFeEtT+-S^thhKpbsI3_NFtE$?3-5X-_0XVdybI*w^ z-+$2!?S69{c+St@3fi4wLTH?%?pF*}krh%W#WAybJxO-KLqd0Ss;Vz9FGUQ*6qx;H zaPL_Ec0Ql~4aOz!=#Wb-sb|*|o1RoNt*e!yPBgJ1IAo_A<0Dynka7T8IBW!`{Pi4m zELH?}2lA2RHUnUo&;uYE0002&&L4c)Ntl}`hUfqQ002ovPDHLkV1j`mDGvYu diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 5123d8b741..dd863075e6 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -279,6 +279,14 @@ minetest.register_craftitem("mcl_potions:potion_mundane", { on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"), on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), }) + +minetest.register_craft({ + type = "cooking", + output = "mcl_potions:potion_awkward", +recipe = "mcl_nether:nether_wart_item", --"mcl_potions:potion_river_water"}, + cooktime = 10, +}) + minetest.register_craftitem("mcl_potions:potion_thick", { description = S("Thick Potion"), _tt_help = S("No effect"), From 5c4cc99621439428f1d487abe99350da125c8e8d Mon Sep 17 00:00:00 2001 From: bzoss Date: Mon, 25 May 2020 09:08:37 -0400 Subject: [PATCH 005/108] Fixed for burning only blaze powder. --- mods/ITEMS/mcl_brewing/depends.txt | 2 +- mods/ITEMS/mcl_brewing/init.lua | 165 +++++++++++++---------------- mods/ITEMS/mcl_mobitems/init.lua | 7 +- 3 files changed, 78 insertions(+), 96 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/depends.txt b/mods/ITEMS/mcl_brewing/depends.txt index 4c84c72900..73f7dce829 100755 --- a/mods/ITEMS/mcl_brewing/depends.txt +++ b/mods/ITEMS/mcl_brewing/depends.txt @@ -2,6 +2,6 @@ mcl_init mcl_formspec mcl_sounds mcl_potions -mcl_mobitems? +mcl_mobitems mcl_core? screwdriver? diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 0e22b472fb..4b0a975a5c 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -4,8 +4,7 @@ local NAME_COLOR = "#FFFF4C" local function active_brewing_formspec(fuel_percent, item_percent) return "size[9,8.75]".. - "background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory.png^[lowpart:".. - (item_percent)..":mcl_brewing_inventory_active.png]".. + "background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory.png]".. -- "background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory_active.png]".. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. @@ -23,6 +22,12 @@ local function active_brewing_formspec(fuel_percent, item_percent) "list[context;stand;7.5,2.5;1,1;2]".. mcl_formspec.get_itemslot_bg(7.5,2.5,1,1).."image[7.5,2.5;1,1;mcl_brewing_bottle_bg.png]".. + "image[2.7,3.33;1.28,0.41;mcl_brewing_burner.png^[lowpart:".. + (100-fuel_percent)..":mcl_brewing_burner_active.png^[transformR270]".. + + "image[2.76,1.4;1,2.15;mcl_brewing_bubbles.png^[lowpart:".. + (item_percent)..":mcl_brewing_bubbles_active.png]".. + "listring[current_player;main]".. "listring[current_name;fuel]".. "listring[current_name;input]".. @@ -47,11 +52,8 @@ local brewing_formspec = "size[9,8.75]".. "list[context;stand;7.5,2.5;1,1;2]".. mcl_formspec.get_itemslot_bg(7.5,2.5,1,1).."image[7.5,2.5;1,1;mcl_brewing_bottle_bg.png]".. - "image[2.7,3.33;1.28,0.41;mcl_brewing_burner.png^[lowpart:".. - (65)..":mcl_brewing_burner_active.png^[transformR270]".. - - "image[2.76,1.4;1,2.15;mcl_brewing_bubbles.png^[lowpart:".. - (65)..":mcl_brewing_bubbles_active.png]".. + "image[2.7,3.33;1.28,0.41;mcl_brewing_burner.png^[transformR270]".. + "image[2.76,1.4;1,2.15;mcl_brewing_bubbles.png]".. "listring[current_player;main]".. "listring[current_name;fuel]".. @@ -73,14 +75,17 @@ local function brewing_stand_timer(pos, elapsed) -- Inizialize metadata local meta = minetest.get_meta(pos) local fuel_time = meta:get_float("fuel_time") or 0 - local input_time = meta:get_float("input_time") or 0 + -- local input_time = meta:get_float("input_time") or 0 local input_item = meta:get_string("input_item") or "" local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 - local inv = meta:get_inventory() - local stand_list, fuellist + local stand_timer = {0,0,0} + local stand_item = {"","",""} - local cookable, cooked + local inv = meta:get_inventory() + local stand_list, fuel_list + + local brewable, brewed local fuel local update = true @@ -89,77 +94,53 @@ local function brewing_stand_timer(pos, elapsed) update = false - local formspec = brewing_formspec - - formspec = active_brewing_formspec(100,15) - input_list = inv:get_list("input") stand_list = inv:get_list("stand") - fuellist = inv:get_list("fuel") - - for i=1, inv:get_size("stand") do - local stack = inv:get_stack("stand", i) - print(stack:get_name()) - print(stack:get_count()) - end + fuel_list = inv:get_list("fuel") - -- Check if we have compatible alchemy - local aftercooked - cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = stand_list}) - cookable = cooked.time ~= 0 + --TODO check if the stands have changed items - -- Check if src item has been changed - if stand_list[1]:get_name() ~= input_item then - -- Reset cooking progress in this case - input_time = 0 - input_item = stand_list[1]:get_name() - update = true + if fuel_time < fuel_totaltime then - -- Check if we have enough fuel to burn - elseif fuel_time < fuel_totaltime then - -- The furnace is currently active and has enough fuel fuel_time = fuel_time + elapsed - -- If there is a cookable item then check if it is ready yet - if cookable then - -- Place result in dst list if done - if input_time >= cooked.time then - inv:add_item("stand", cooked.item) - inv:set_stack("input", 1, aftercooked.items[1]) - input_time = 0 - update = true - end + --TODO check to see if we can brew - elseif input_time ~= 0 then - -- If output slot is occupied, stop cooking - input_time = 0 - update = true - end - else - -- Furnace ran out of fuel - if cookable then - -- We need to get new fuel - local afterfuel - fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + else --get more fuel from fuel_list - if fuel.time == 0 then - -- No valid fuel in fuel list - fuel_totaltime = 0 - input_time = 0 - else - -- Take fuel from fuel list - inv:set_stack("fuel", 1, afterfuel.items[1]) - update = true - fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime) - input_time = input_time + elapsed - end - else - -- We don't need to get new fuel since there is no cookable item + local after_fuel + + -- for i=1, inv:get_size("stand") do + -- local stack = inv:get_stack("stand", i) + -- print(stack:get_name()) + -- print(stack:get_count()) + -- end + print(inv:get_stack("fuel",1):get_name()) + + fuel, after_fuel = minetest.get_craft_result({method="fuel", width=1, items=fuel_list}) + + if fuel.time == 0 then --no valid fuel, reset timers fuel_totaltime = 0 - input_time = 0 + + for i=1, inv:get_size("stand", i) do + stand_timer[i] = 0 + end + + fuel_totaltime = 0 + for i=1, inv:get_size("stand", i) do + stand_timer[i] = 0 + end + -- only allow blaze powder fuel + elseif inv:get_stack("fuel",1):get_name() == "mcl_mobitems:blaze_powder" then -- Grab another fuel + inv:set_stack("fuel", 1, after_fuel.items[1]) + update = true + fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime) + for i=1, inv:get_size("stand", i) do + stand_timer[i] = stand_timer[i] + elapsed + end end - fuel_time = 0 + end elapsed = 0 @@ -168,43 +149,33 @@ local function brewing_stand_timer(pos, elapsed) if fuel and fuel_totaltime > fuel.time then fuel_totaltime = fuel.time end - if stand_list[1]:is_empty() then - input_time = 0 + + for i=1, inv:get_size("stand", i) do + if stand_list[i]:is_empty() then + stand_timer[i] = 0 + end end - -- - -- Update formspec and node - -- + --update formspec local formspec = brewing_formspec - formspec = active_brewing_formspec(100,85) - local item_state - local item_percent = 0 - - if cookable then - item_percent = math.floor(input_time / cooked.time * 100) - end local result = false if fuel_totaltime ~= 0 then - local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) - formspec = active_brewing_formspec(fuel_percent, item_percent) + local fuel_percent = math.floor(fuel_time/fuel_totaltime*100) + formspec = active_brewing_formspec(fuel_percent, 60) swap_node(pos, "mcl_brewing:stand_active") - -- make sure timer restarts automatically result = true else swap_node(pos, "mcl_brewing:stand") - -- stop timer on the inactive stand minetest.get_node_timer(pos):stop() end - -- - -- Set meta values - -- + meta:set_float("fuel_totaltime", fuel_totaltime) meta:set_float("fuel_time", fuel_time) - meta:set_float("input_time", input_time) - meta:set_string("input_item", stand_list[1]:get_name()) + -- meta:set_float("src_time", src_time) + -- meta:set_string("src_item", srclist[1]:get_name()) meta:set_string("formspec", formspec) return result @@ -277,10 +248,13 @@ local function drop_brewing_stand_items(pos, meta) end - +local on_rotate +if minetest.get_modpath("screwdriver") then + on_rotate = screwdriver.rotate_simple +end local brewing_stand_def = { - groups = {pickaxey=1, falling_node=1, falling_node_damage=1, crush_after_fall=1, deco_block=1, brewing_stand=1}, + groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1}, tiles = {"mcl_brewing_top.png", --top "mcl_brewing_base.png", --bottom "mcl_brewing_side.png", --right @@ -295,7 +269,7 @@ local brewing_stand_def = { node_box = { type = "fixed", fixed = { - --TODO: add bottle hangers + {-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base @@ -404,6 +378,7 @@ local brewing_stand_def = { end, on_timer = brewing_stand_timer, + on_rotate = on_rotate, } @@ -427,6 +402,8 @@ minetest.register_node("mcl_brewing:stand", brewing_stand_def) local brewing_stand_active_def = brewing_stand_def brewing_stand_active_def.light_source = 8 +brewing_stand_active_def.drop = "mcl_brewing:stand" +brewing_stand_active_def.groups = {not_in_creative_inventory=1, pickaxey=1, falling_node=1, falling_node_damage=1, crush_after_fall=1, deco_block=1, brewing_stand=1} minetest.register_node("mcl_brewing:stand_active", brewing_stand_active_def) if minetest.get_modpath("mcl_core") then diff --git a/mods/ITEMS/mcl_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index 3e6aef4853..0b4d47e0de 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -428,6 +428,12 @@ minetest.register_craft({ burntime = 120, }) +minetest.register_craft({ + type = "fuel", + recipe = "mcl_mobitems:blaze_powder", + burntime = 120, +}) + minetest.register_craft({ output = 'mcl_mobitems:slimeball 9', recipe = {{"mcl_core:slimeblock"}}, @@ -439,4 +445,3 @@ minetest.register_craft({ {"mcl_mobitems:slimeball","mcl_mobitems:slimeball","mcl_mobitems:slimeball",}, {"mcl_mobitems:slimeball","mcl_mobitems:slimeball","mcl_mobitems:slimeball",}}, }) - From 190eb32ac2d4bc8125b84e4efad6bc8acbb52bb4 Mon Sep 17 00:00:00 2001 From: bzoss Date: Mon, 25 May 2020 09:28:23 -0400 Subject: [PATCH 006/108] Update brew timer...will reset if any bottle is changed --- mods/ITEMS/mcl_brewing/init.lua | 51 ++++++++++++++++----------------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 4b0a975a5c..434309d164 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -74,16 +74,18 @@ end local function brewing_stand_timer(pos, elapsed) -- Inizialize metadata local meta = minetest.get_meta(pos) + local fuel_time = meta:get_float("fuel_time") or 0 - -- local input_time = meta:get_float("input_time") or 0 - local input_item = meta:get_string("input_item") or "" local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 - local stand_timer = {0,0,0} - local stand_item = {"","",""} + local input_item = meta:get_string("input_item") or "" + + local stand_timer = meta:get_float("stand_timer") or 0 + local stand_items = meta:get_string("stand_items") or {"","",""} local inv = meta:get_inventory() - local stand_list, fuel_list + + local input_list, stand_list, fuel_list local brewable, brewed local fuel @@ -98,8 +100,14 @@ local function brewing_stand_timer(pos, elapsed) stand_list = inv:get_list("stand") fuel_list = inv:get_list("fuel") - - --TODO check if the stands have changed items + -- TODO fix this function to check for change in stand content... + -- for i=1, inv:get_size("stand", i) do -- reset the process due to change + -- if stand_list[i]:get_name() ~= stand_list[i] then + -- stand_timer = 0 + -- stand_list[i] = stand_list[i]:get_name() + -- update = true -- need to update the stand with new data + -- end + -- end if fuel_time < fuel_totaltime then @@ -111,34 +119,23 @@ local function brewing_stand_timer(pos, elapsed) local after_fuel - -- for i=1, inv:get_size("stand") do - -- local stack = inv:get_stack("stand", i) - -- print(stack:get_name()) - -- print(stack:get_count()) - -- end - print(inv:get_stack("fuel",1):get_name()) + -- print(inv:get_stack("fuel",1):get_name()) fuel, after_fuel = minetest.get_craft_result({method="fuel", width=1, items=fuel_list}) if fuel.time == 0 then --no valid fuel, reset timers - fuel_totaltime = 0 - - for i=1, inv:get_size("stand", i) do - stand_timer[i] = 0 - end fuel_totaltime = 0 - for i=1, inv:get_size("stand", i) do - stand_timer[i] = 0 - end + stand_timer = 0 + -- only allow blaze powder fuel elseif inv:get_stack("fuel",1):get_name() == "mcl_mobitems:blaze_powder" then -- Grab another fuel inv:set_stack("fuel", 1, after_fuel.items[1]) + update = true + fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime) - for i=1, inv:get_size("stand", i) do - stand_timer[i] = stand_timer[i] + elapsed - end + stand_timer = stand_timer + elapsed end end @@ -152,7 +149,7 @@ local function brewing_stand_timer(pos, elapsed) for i=1, inv:get_size("stand", i) do if stand_list[i]:is_empty() then - stand_timer[i] = 0 + stand_timer = 0 end end @@ -174,8 +171,8 @@ local function brewing_stand_timer(pos, elapsed) meta:set_float("fuel_totaltime", fuel_totaltime) meta:set_float("fuel_time", fuel_time) - -- meta:set_float("src_time", src_time) - -- meta:set_string("src_item", srclist[1]:get_name()) + meta:set_float("stand_timer", stand_timer) + -- meta:set_string("stand_items", stand_list) meta:set_string("formspec", formspec) return result From 0df8bb94f90150912e0b91841e93fc448686fe77 Mon Sep 17 00:00:00 2001 From: bzoss Date: Mon, 25 May 2020 09:29:23 -0400 Subject: [PATCH 007/108] Remove "active" stand node definition --- mods/ITEMS/mcl_brewing/init.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 434309d164..c535831f96 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -397,11 +397,11 @@ brewing_stand_def._tt_help = S("Repair and rename items") minetest.register_node("mcl_brewing:stand", brewing_stand_def) -local brewing_stand_active_def = brewing_stand_def -brewing_stand_active_def.light_source = 8 -brewing_stand_active_def.drop = "mcl_brewing:stand" -brewing_stand_active_def.groups = {not_in_creative_inventory=1, pickaxey=1, falling_node=1, falling_node_damage=1, crush_after_fall=1, deco_block=1, brewing_stand=1} -minetest.register_node("mcl_brewing:stand_active", brewing_stand_active_def) +-- local brewing_stand_active_def = brewing_stand_def +-- brewing_stand_active_def.light_source = 8 +-- brewing_stand_active_def.drop = "mcl_brewing:stand" +-- brewing_stand_active_def.groups = {not_in_creative_inventory=1, pickaxey=1, falling_node=1, falling_node_damage=1, crush_after_fall=1, deco_block=1, brewing_stand=1} +-- minetest.register_node("mcl_brewing:stand_active", brewing_stand_active_def) if minetest.get_modpath("mcl_core") then minetest.register_craft({ From b5b00209976e34bedf47213a63aa6472bf4e153c Mon Sep 17 00:00:00 2001 From: bzoss Date: Mon, 25 May 2020 15:31:35 -0400 Subject: [PATCH 008/108] Laid the framework to brew potions...TODO make it actually swap for the potion. --- mods/ITEMS/mcl_brewing/init.lua | 46 +++++++++++++++--- mods/ITEMS/mcl_potions/init.lua | 16 +++--- .../textures/mcl_potions_healing.png | Bin 0 -> 1261 bytes 3 files changed, 50 insertions(+), 12 deletions(-) create mode 100644 mods/ITEMS/mcl_potions/textures/mcl_potions_healing.png diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index c535831f96..3657b10b59 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -71,12 +71,37 @@ local function swap_node(pos, name) end +local function brewable(inv) + + local ingredient = inv:get_stack("input",1):get_name() + local stands = {"","",""} + + for i=1,3 do + + local bottle = inv:get_stack("stand", i):get_name() + + if ingredient == "mcl_nether:nether_wart_item" and bottle == "mcl_potions:potion_river_water" or "mcl_potions:potion_water" then + stands[i] = "mcl_potions:potion_awkward" + end + + end + + for i=1,3 do + if stands[i] then return stands end + end + + return false + +end + + local function brewing_stand_timer(pos, elapsed) -- Inizialize metadata local meta = minetest.get_meta(pos) local fuel_time = meta:get_float("fuel_time") or 0 local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 + local BREW_TIME = 10 local input_item = meta:get_string("input_item") or "" @@ -87,7 +112,6 @@ local function brewing_stand_timer(pos, elapsed) local input_list, stand_list, fuel_list - local brewable, brewed local fuel local update = true @@ -109,11 +133,21 @@ local function brewing_stand_timer(pos, elapsed) -- end -- end + local brew_output = brewable(inv) + if fuel_time < fuel_totaltime then fuel_time = fuel_time + elapsed - --TODO check to see if we can brew + -- Replace the stand item with the brew result + if brew_output and (stand_timer >= BREW_TIME) then + for i=1, inv:get_size("stand", i) do + if brew_output[i] then + inv:set_stack("stand", i, brew_output[i]) + end + end + end + else --get more fuel from fuel_list @@ -139,7 +173,6 @@ local function brewing_stand_timer(pos, elapsed) end end - elapsed = 0 end @@ -160,11 +193,12 @@ local function brewing_stand_timer(pos, elapsed) if fuel_totaltime ~= 0 then local fuel_percent = math.floor(fuel_time/fuel_totaltime*100) - formspec = active_brewing_formspec(fuel_percent, 60) - swap_node(pos, "mcl_brewing:stand_active") + local brew_percent = math.floor(stand_timer/BREW_TIME*100) % 100 + formspec = active_brewing_formspec(fuel_percent, stand_timer) + -- swap_node(pos, "mcl_brewing:stand_active") result = true else - swap_node(pos, "mcl_brewing:stand") + -- swap_node(pos, "mcl_brewing:stand") minetest.get_node_timer(pos):stop() end diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index dd863075e6..622b08e82f 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -280,12 +280,6 @@ minetest.register_craftitem("mcl_potions:potion_mundane", { on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), }) -minetest.register_craft({ - type = "cooking", - output = "mcl_potions:potion_awkward", -recipe = "mcl_nether:nether_wart_item", --"mcl_potions:potion_river_water"}, - cooktime = 10, -}) minetest.register_craftitem("mcl_potions:potion_thick", { description = S("Thick Potion"), @@ -328,3 +322,13 @@ minetest.register_craftitem("mcl_potions:dragon_breath", { groups = { brewitem = 1, not_in_creative_inventory = 1 }, stack_max = 64, }) + +minetest.register_craftitem("mcl_potions:healing", { + description = S("Healing Potion"), + _doc_items_longdesc = brewhelp, + wield_image = "mcl_potions_healing.png", + inventory_image = "mcl_potions_healing.png", + -- TODO: Reveal item when it's actually useful + groups = { brewitem = 1, food=5}, + stack_max = 64, +}) diff --git a/mods/ITEMS/mcl_potions/textures/mcl_potions_healing.png b/mods/ITEMS/mcl_potions/textures/mcl_potions_healing.png new file mode 100644 index 0000000000000000000000000000000000000000..66bdbe0065be22e8cb94da875e61db61ee8da2bc GIT binary patch literal 1261 zcmds#y=#+E6vj_Xs%a%1vf0p3{D6vr;z4jwNhQTpN({9_9fX4PAa$wOK~zvgs7e)! z8aUw4!O0ppm0`P#Z4UckOwev8*#utAm9+x5Cb$QaTFYA3~fk5%OkniMvY~v z9znt%+M+U3bL0xUpuncOsUt@ujR3%f;|LmV5hd~fCT=4RFu^b!f*N9g#!X;>1C5~# zX^#=bX>6m$a!d?C!XMhAGWQr@8h=oviN-wBkOC^@9^*|>24hMmrkxB2a`F(vPgvm~ zb%HcL2TTd!!Bc9LzQlk2n!0$opD07KWAzij_%GMrhFW^7(>U8bQ#*N{sCOlv%!6IM zCHy%zQXLvUaQo%zi^B5We6F!)%k$HBXP3GsuHPA2-O*lYPA$Cp+O91%=W;h@4sIXa zwDzoZ8 GYkvT-_G^3q literal 0 HcmV?d00001 From cae4940e702918a83baa704820ad2e99488c9251 Mon Sep 17 00:00:00 2001 From: bzoss Date: Tue, 26 May 2020 18:10:20 -0400 Subject: [PATCH 009/108] Updated a few simple potions. TODO: Stop fuel burn once the potion is complete. --- mods/ITEMS/mcl_brewing/init.lua | 109 +++++++++++------- mods/ITEMS/mcl_potions/init.lua | 18 ++- .../textures/mcl_potions_weakness.png | Bin 0 -> 1260 bytes 3 files changed, 84 insertions(+), 43 deletions(-) create mode 100644 mods/ITEMS/mcl_potions/textures/mcl_potions_weakness.png diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 3657b10b59..75f04df9d6 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -75,23 +75,35 @@ local function brewable(inv) local ingredient = inv:get_stack("input",1):get_name() local stands = {"","",""} + local stand_size = inv:get_size("stand") - for i=1,3 do + for i=1,stand_size do local bottle = inv:get_stack("stand", i):get_name() + stands[i] = bottle -- initialize the stand - if ingredient == "mcl_nether:nether_wart_item" and bottle == "mcl_potions:potion_river_water" or "mcl_potions:potion_water" then - stands[i] = "mcl_potions:potion_awkward" + if bottle == "mcl_potions:potion_river_water" or bottle == "mcl_potions:potion_water" then + if ingredient == "mcl_nether:nether_wart_item" then + stands[i] = "mcl_potions:potion_awkward" + elseif ingredient == "mcl_potions:fermented_spider_eye" then + stands[i] = "mcl_potions:weakness" + end + + elseif bottle == "mcl_potions:potion_awkward" then + if ingredient == "mcl_potions:speckled_melon" then + stands[i] = "mcl_potions:healing" + end end end - - for i=1,3 do - if stands[i] then return stands end + -- if any stand holds a new potion, return the list of new potions + for i=1,stand_size do + if stands[i] ~= inv:get_stack("stand", i):get_name() then + return stands + end end return false - end @@ -101,7 +113,7 @@ local function brewing_stand_timer(pos, elapsed) local fuel_time = meta:get_float("fuel_time") or 0 local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 - local BREW_TIME = 10 + local BREW_TIME = 30 -- all brews take max of 10 local input_item = meta:get_string("input_item") or "" @@ -124,11 +136,12 @@ local function brewing_stand_timer(pos, elapsed) stand_list = inv:get_list("stand") fuel_list = inv:get_list("fuel") - -- TODO fix this function to check for change in stand content... + -- TODO ... fix this. Goal is to reset the process if the stand changes -- for i=1, inv:get_size("stand", i) do -- reset the process due to change - -- if stand_list[i]:get_name() ~= stand_list[i] then + -- local _name = inv:get_stack("stand", i):get_name() + -- if _name ~= stand_list[i] then -- stand_timer = 0 - -- stand_list[i] = stand_list[i]:get_name() + -- stand_list[i] = _name -- update = true -- need to update the stand with new data -- end -- end @@ -139,39 +152,58 @@ local function brewing_stand_timer(pos, elapsed) fuel_time = fuel_time + elapsed - -- Replace the stand item with the brew result - if brew_output and (stand_timer >= BREW_TIME) then - for i=1, inv:get_size("stand", i) do - if brew_output[i] then - inv:set_stack("stand", i, brew_output[i]) + if brew_output then + + stand_timer = stand_timer + elapsed + -- Replace the stand item with the brew result + if stand_timer >= BREW_TIME then + + local input_count = inv:get_stack("input",1):get_count() + if (input_count-1) ~= 0 then + inv:set_stack("input",1,inv:get_stack("input",1):get_name().." "..(input_count-1)) + else + inv:set_stack("input",1,"") end + + for i=1, inv:get_size("stand") do + if brew_output[i] then + inv:set_stack("stand", i, brew_output[i]) + end + end + stand_timer = 0 + update = false -- stop the update if brew is complete end + end else --get more fuel from fuel_list local after_fuel - - -- print(inv:get_stack("fuel",1):get_name()) - fuel, after_fuel = minetest.get_craft_result({method="fuel", width=1, items=fuel_list}) - if fuel.time == 0 then --no valid fuel, reset timers + if brew_output then - fuel_totaltime = 0 + if fuel.time == 0 then --no valid fuel, reset timers + + fuel_totaltime = 0 + stand_timer = 0 + + -- only allow blaze powder fuel + elseif inv:get_stack("fuel",1):get_name() == "mcl_mobitems:blaze_powder" then -- Grab another fuel + inv:set_stack("fuel", 1, after_fuel.items[1]) + + update = true + fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime) + stand_timer = stand_timer + elapsed + + end + + else --if no output potion, stop the process + fuel_total_time = 0 stand_timer = 0 - - -- only allow blaze powder fuel - elseif inv:get_stack("fuel",1):get_name() == "mcl_mobitems:blaze_powder" then -- Grab another fuel - inv:set_stack("fuel", 1, after_fuel.items[1]) - - update = true - - fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime) - stand_timer = stand_timer + elapsed end - + fuel_time = 0 end elapsed = 0 end @@ -180,11 +212,11 @@ local function brewing_stand_timer(pos, elapsed) fuel_totaltime = fuel.time end - for i=1, inv:get_size("stand", i) do - if stand_list[i]:is_empty() then - stand_timer = 0 - end - end + -- for i=1, inv:get_size("stand") do + -- if stand_list[i]:is_empty() then + -- stand_timer = 0 + -- end + -- end --update formspec local formspec = brewing_formspec @@ -193,8 +225,8 @@ local function brewing_stand_timer(pos, elapsed) if fuel_totaltime ~= 0 then local fuel_percent = math.floor(fuel_time/fuel_totaltime*100) - local brew_percent = math.floor(stand_timer/BREW_TIME*100) % 100 - formspec = active_brewing_formspec(fuel_percent, stand_timer) + local brew_percent = math.floor(stand_timer/BREW_TIME*100) + formspec = active_brewing_formspec(fuel_percent, brew_percent*2 % 100) -- swap_node(pos, "mcl_brewing:stand_active") result = true else @@ -340,7 +372,6 @@ local brewing_stand_def = { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1200, _mcl_hardness = 5, - _mcl_after_falling = damage_brewing_stand_by_falling, after_dig_node = function(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 622b08e82f..44b8885a46 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -290,7 +290,7 @@ minetest.register_craftitem("mcl_potions:potion_thick", { inventory_image = potion_image("#0000FF"), wield_image = potion_image("#0000FF"), -- TODO: Reveal item when it's actually useful - groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=1 }, + groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"), on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), }) @@ -300,7 +300,7 @@ minetest.register_craftitem("mcl_potions:speckled_melon", { _doc_items_longdesc = S("This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else."), stack_max = 64, -- TODO: Reveal item when it's actually useful - groups = { brewitem = 1, not_in_creative_inventory = 1, not_in_craft_guide = 1 }, + groups = { brewitem = 1, not_in_creative_inventory = 0, not_in_craft_guide = 1 }, inventory_image = "mcl_potions_melon_speckled.png", }) @@ -319,7 +319,7 @@ minetest.register_craftitem("mcl_potions:dragon_breath", { wield_image = "mcl_potions_dragon_breath.png", inventory_image = "mcl_potions_dragon_breath.png", -- TODO: Reveal item when it's actually useful - groups = { brewitem = 1, not_in_creative_inventory = 1 }, + groups = { brewitem = 1, not_in_creative_inventory = 0 }, stack_max = 64, }) @@ -330,5 +330,15 @@ minetest.register_craftitem("mcl_potions:healing", { inventory_image = "mcl_potions_healing.png", -- TODO: Reveal item when it's actually useful groups = { brewitem = 1, food=5}, - stack_max = 64, + stack_max = 1, +}) + +minetest.register_craftitem("mcl_potions:weakness", { + description = S("Healing Potion"), + _doc_items_longdesc = brewhelp, + wield_image = "mcl_potions_weakness.png", + inventory_image = "mcl_potions_weakness.png", + -- TODO: Reveal item when it's actually useful + groups = { brewitem = 1, food=-5}, + stack_max = 1, }) diff --git a/mods/ITEMS/mcl_potions/textures/mcl_potions_weakness.png b/mods/ITEMS/mcl_potions/textures/mcl_potions_weakness.png new file mode 100644 index 0000000000000000000000000000000000000000..524ebeea6aa747c33bfc685e2cd55aac676e3ebe GIT binary patch literal 1260 zcmds#y=zoa5XEQn2quB7f=zUdZebxJKD3J#+aT{@f35MYi)DQzSZUPG&Xbf#g zdyFVfV;eP=V`2yr{?HbcxyJz0_=6%%H0GIx6i_Mm7;lO)7*jei?PNHRlZP07!U_ke z6QuDuU`hxNo>HsyCI0i*{!?dqiE?zTR^0)N|8o6psD(K_gtMJT%0r_>`4{ozrdH<* z`15?F)L&nB`Pr+D`Bt%`z0vpP$w>PNo&WlL*YxArTQfcD%V!UN-ubiKTy$k};!ERQ zZ9c2NK0eeOp_^@`>&^1iXno(Z+}+`}o|6mj4DTHu%YNxrnjtZEx+*K>9&{O4}Qq{7PmSJE5A+t9)Ei+EL8@orF)wj G=l%evV{E$s literal 0 HcmV?d00001 From c9ff19d02a7f719d4b01a3fe5ffb5999c7b81882 Mon Sep 17 00:00:00 2001 From: bzoss Date: Tue, 26 May 2020 18:15:50 -0400 Subject: [PATCH 010/108] Some small doc string updates. --- mods/ITEMS/mcl_brewing/init.lua | 2 +- mods/ITEMS/mcl_potions/init.lua | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 75f04df9d6..fef771f13c 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -226,7 +226,7 @@ local function brewing_stand_timer(pos, elapsed) if fuel_totaltime ~= 0 then local fuel_percent = math.floor(fuel_time/fuel_totaltime*100) local brew_percent = math.floor(stand_timer/BREW_TIME*100) - formspec = active_brewing_formspec(fuel_percent, brew_percent*2 % 100) + formspec = active_brewing_formspec(fuel_percent, brew_percent*4 % 100) -- swap_node(pos, "mcl_brewing:stand_active") result = true else diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 44b8885a46..6d7704821a 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -320,7 +320,7 @@ minetest.register_craftitem("mcl_potions:dragon_breath", { inventory_image = "mcl_potions_dragon_breath.png", -- TODO: Reveal item when it's actually useful groups = { brewitem = 1, not_in_creative_inventory = 0 }, - stack_max = 64, + stack_max = 1, }) minetest.register_craftitem("mcl_potions:healing", { @@ -334,7 +334,7 @@ minetest.register_craftitem("mcl_potions:healing", { }) minetest.register_craftitem("mcl_potions:weakness", { - description = S("Healing Potion"), + description = S("Weakness Potion"), _doc_items_longdesc = brewhelp, wield_image = "mcl_potions_weakness.png", inventory_image = "mcl_potions_weakness.png", From 36ce478361786f9d7ed7d208dc83c8ac32424e60 Mon Sep 17 00:00:00 2001 From: bzoss Date: Tue, 26 May 2020 21:07:07 -0400 Subject: [PATCH 011/108] Comment some broken bits. --- mods/ITEMS/mcl_brewing/init.lua | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index fef771f13c..81a514ec0e 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -118,7 +118,7 @@ local function brewing_stand_timer(pos, elapsed) local input_item = meta:get_string("input_item") or "" local stand_timer = meta:get_float("stand_timer") or 0 - local stand_items = meta:get_string("stand_items") or {"","",""} + -- local stand_items = meta:get_list("stand_items") or {"","",""} local inv = meta:get_inventory() @@ -139,10 +139,11 @@ local function brewing_stand_timer(pos, elapsed) -- TODO ... fix this. Goal is to reset the process if the stand changes -- for i=1, inv:get_size("stand", i) do -- reset the process due to change -- local _name = inv:get_stack("stand", i):get_name() - -- if _name ~= stand_list[i] then + -- if _name ~= stand_items[i] then -- stand_timer = 0 - -- stand_list[i] = _name + -- stand_items[i] = _name -- update = true -- need to update the stand with new data + -- return 1 -- end -- end @@ -238,7 +239,7 @@ local function brewing_stand_timer(pos, elapsed) meta:set_float("fuel_totaltime", fuel_totaltime) meta:set_float("fuel_time", fuel_time) meta:set_float("stand_timer", stand_timer) - -- meta:set_string("stand_items", stand_list) + -- meta:set_list("stand_items", stand_list) meta:set_string("formspec", formspec) return result From 2ad28f1fac60254e8d6f4dcca32f3fec4dc097b7 Mon Sep 17 00:00:00 2001 From: bzoss Date: Tue, 26 May 2020 21:16:52 -0400 Subject: [PATCH 012/108] Update with sounds, and turn on some potion items. --- mods/ITEMS/mcl_brewing/init.lua | 2 ++ mods/ITEMS/mcl_potions/init.lua | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 81a514ec0e..91ac7a9d04 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -168,7 +168,9 @@ local function brewing_stand_timer(pos, elapsed) for i=1, inv:get_size("stand") do if brew_output[i] then + minetest.sound_play("mcl_potions_bottle_fill", {pos=pos, gain=0.4, max_hear_range=16}, true) inv:set_stack("stand", i, brew_output[i]) + minetest.sound_play("mcl_potions_bottle_pour", {pos=pos, gain=0.6, max_hear_range=16}, true) end end stand_timer = 0 diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 6d7704821a..bac4fdd967 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -8,7 +8,7 @@ minetest.register_craftitem("mcl_potions:fermented_spider_eye", { wield_image = "mcl_potions_spider_eye_fermented.png", inventory_image = "mcl_potions_spider_eye_fermented.png", -- TODO: Reveal item when it's actually useful - groups = { brewitem = 1, not_in_creative_inventory = 1, not_in_craft_guide = 1 }, + groups = { brewitem = 1, not_in_creative_inventory = 0, not_in_craft_guide = 0 }, stack_max = 64, }) From 861aedbfa34aa0eae11d54dffc0be1bf9105085b Mon Sep 17 00:00:00 2001 From: bzoss Date: Wed, 27 May 2020 18:36:10 -0400 Subject: [PATCH 013/108] Updated potion offering - moved alchemy matrix to mcl_potions --- mods/ITEMS/mcl_brewing/init.lua | 26 +++------- mods/ITEMS/mcl_potions/init.lua | 48 ++++++++++++++++-- .../textures/mcl_potions_night_vision.png | Bin 0 -> 1260 bytes .../textures/mcl_potions_swiftness.png | Bin 0 -> 1262 bytes 4 files changed, 52 insertions(+), 22 deletions(-) create mode 100644 mods/ITEMS/mcl_potions/textures/mcl_potions_night_vision.png create mode 100644 mods/ITEMS/mcl_potions/textures/mcl_potions_swiftness.png diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 91ac7a9d04..3b8577a31c 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -1,5 +1,4 @@ local S = minetest.get_translator("mcl_brewing_stand") -local NAME_COLOR = "#FFFF4C" local function active_brewing_formspec(fuel_percent, item_percent) @@ -76,32 +75,23 @@ local function brewable(inv) local ingredient = inv:get_stack("input",1):get_name() local stands = {"","",""} local stand_size = inv:get_size("stand") + local was_alchemy = true for i=1,stand_size do local bottle = inv:get_stack("stand", i):get_name() - stands[i] = bottle -- initialize the stand - if bottle == "mcl_potions:potion_river_water" or bottle == "mcl_potions:potion_water" then - if ingredient == "mcl_nether:nether_wart_item" then - stands[i] = "mcl_potions:potion_awkward" - elseif ingredient == "mcl_potions:fermented_spider_eye" then - stands[i] = "mcl_potions:weakness" - end - - elseif bottle == "mcl_potions:potion_awkward" then - if ingredient == "mcl_potions:speckled_melon" then - stands[i] = "mcl_potions:healing" - end + local alchemy = mcl_potions.get_alchemy(ingredient, bottle) + if alchemy then + stands[i] = alchemy + else + stands[i] = bottle + was_alchemy = false end end -- if any stand holds a new potion, return the list of new potions - for i=1,stand_size do - if stands[i] ~= inv:get_stack("stand", i):get_name() then - return stands - end - end + if was_alchemy then return stands end return false end diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index bac4fdd967..ac2d1c26c0 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -299,7 +299,6 @@ minetest.register_craftitem("mcl_potions:speckled_melon", { description = S("Glistering Melon"), _doc_items_longdesc = S("This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else."), stack_max = 64, - -- TODO: Reveal item when it's actually useful groups = { brewitem = 1, not_in_creative_inventory = 0, not_in_craft_guide = 1 }, inventory_image = "mcl_potions_melon_speckled.png", }) @@ -318,7 +317,6 @@ minetest.register_craftitem("mcl_potions:dragon_breath", { _doc_items_longdesc = brewhelp, wield_image = "mcl_potions_dragon_breath.png", inventory_image = "mcl_potions_dragon_breath.png", - -- TODO: Reveal item when it's actually useful groups = { brewitem = 1, not_in_creative_inventory = 0 }, stack_max = 1, }) @@ -328,7 +326,6 @@ minetest.register_craftitem("mcl_potions:healing", { _doc_items_longdesc = brewhelp, wield_image = "mcl_potions_healing.png", inventory_image = "mcl_potions_healing.png", - -- TODO: Reveal item when it's actually useful groups = { brewitem = 1, food=5}, stack_max = 1, }) @@ -338,7 +335,50 @@ minetest.register_craftitem("mcl_potions:weakness", { _doc_items_longdesc = brewhelp, wield_image = "mcl_potions_weakness.png", inventory_image = "mcl_potions_weakness.png", - -- TODO: Reveal item when it's actually useful groups = { brewitem = 1, food=-5}, stack_max = 1, }) + +minetest.register_craftitem("mcl_potions:night_vision", { + description = S("Night Vision Potion"), + _doc_items_longdesc = brewhelp, + wield_image = "mcl_potions_night_vision.png", + inventory_image = "mcl_potions_night_vision.png", + groups = { brewitem = 1, food=0}, + stack_max = 1, +}) + +minetest.register_craftitem("mcl_potions:swiftness", { + description = S("Swiftness Potion"), + _doc_items_longdesc = brewhelp, + wield_image = "mcl_potions_swiftness.png", + inventory_image = "mcl_potions_swiftness.png", + groups = { brewitem = 1, food=0}, + stack_max = 1, +}) + +mcl_potions = {} + +-- Compare two ingredients for compatable alchemy +function mcl_potions.get_alchemy(ingr, pot) + + if pot == "mcl_potions:potion_river_water" or pot == "mcl_potions:potion_water" then + if ingr == "mcl_nether:nether_wart_item" then + return "mcl_potions:potion_awkward" + elseif ingr == "mcl_potions:fermented_spider_eye" then + return "mcl_potions:weakness" + end + + elseif pot == "mcl_potions:potion_awkward" then + if ingr == "mcl_potions:speckled_melon" then + return "mcl_potions:healing" + elseif ingr == "mcl_farming:carrot_item_gold" then + return "mcl_potions:night_vision" + elseif ingr == "mcl_core:sugar" then + return "mcl_potions:swiftness" + end + + else + return false + end +end diff --git a/mods/ITEMS/mcl_potions/textures/mcl_potions_night_vision.png b/mods/ITEMS/mcl_potions/textures/mcl_potions_night_vision.png new file mode 100644 index 0000000000000000000000000000000000000000..9a4ee688c9394bacd4292c0ad7e2fa430e357b89 GIT binary patch literal 1260 zcmds#(Tj{>6vofAX=lgIxZr}FmfahrQKpUyYSpr{cBZsVYqq!$g`<_CY>KE|7ecwz zbnaGBBAW}lMX61jrB2kAB3WC?g$pYsMbq(|_b+he!du@roq6B)Ilt#Q-?jSiP(Ig{ zBcgn*S{cD_PdwQ+yeqe_KPPIV`o6{>N+Ko_A|)~+kBXUCh?UrgJvN0&ghWY<#N(_o zsgNqEk$PM;CKECxGctz~Ig<;yk{dY+XhRxWxQx>tePRi-G8?l;TT~(}%3>@Y6xdW@ zRaRs5fWlc5Hf1w52P3Ys3%jx#JGz1zVt@uEu&{^5(1tX$aM{C9)L1HFA|C$G7L}@~ ziF()t1vX8^Ow8dPP&g~D;wBDz$OD+TjX2;R5O4@;hyfauI0_ClhBl<3<&j)$qsB5- zk09X>ZBd!2IdX+vP+(Kt)R7~SMgZW#aRd#wh!S}K6Solum|z$VK@BlL<0i1cfyU5= zw8x0zG`3M=IVOf6;SX(5nR^T{jXx;TL}Q+5NCA~{kMX7`gE6HO(@us1IeCcTC#-Og zIzbwr1Ez%V;3>6AU*bQ19lvm~nTKWZPluk&EQ}3g&s}ZRdQbmY+vxl~@NE3y z^p;lU-p*~S%LN*pIKQrZe{sW`^+WxoChc8nD>dIveVm&e-F$4}OXk)_%H3`K?0?bz z;P9)XkEgoYA9a77tZyp6@BGkP>{&B^VCl~1U)xtEn;pw^>HEyew`~4YSgH*USElzI Gx%>wc!)$*5 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_potions/textures/mcl_potions_swiftness.png b/mods/ITEMS/mcl_potions/textures/mcl_potions_swiftness.png new file mode 100644 index 0000000000000000000000000000000000000000..4dbf788a61fd9379fceb236ecc919e1f3ffdd65b GIT binary patch literal 1262 zcmds#v1^lI5XLW!k{V1D2N7GPZbDqjE#e?5sck?@jD;dth@v+HheFjsS|}n?#bO6b zI1yB^qJn~pU24f7)#AAbh2WrrlMXsKWDq@{d;bC_2VeNUaCzVNx!?2Lcda@+SjcbB z6H%cuRIcH-FP`o!-sK0^SBSDyJu)(Yl8A|fNQsQdqhcl&VkI_Wk4<3`AyE<|@i?nY zDx^wkq#jp|$%IVFjLe}#&g4R_^>GT=p;&HI|B)h=)J4MWrfg zq8@fZflX5}6LYu+6wZpPxQW9a@&G1oBM$fn1RR1IVt@uEj)DV?p$%zhc_bIxsIg4d zBS`o|TU2Ihj$C0E6xdWZb>xVo5dgSw96`e^qC_6R#BIa@CK!f8P(uvRxCtz9pfR)| z?J=S_jcwFej)@^i_(NM%<{kq~;}427(U@l%Qb48LW4tNKU`*-6w3FdLP99?T2`e0= zPLRgufGHt7cuK9(m-x?LXD?0eAj;7B+VF8;{Fm!*L+x4B2F`96A38BXRD2arX1-MH z!Jjjg^1+e4voGJjE42E$*Vmi%E@>?F&nzxawHFpI-f7&ppZjw2=;Y}BEqzx$?>e=w z{o>YdTDvf|wcbllrr+$|d~Bh2ZQJ01Qj-pU%$Az%d!Jg%qbp}#f6YAHN%=>=I@7DU zr+0rmKUtm4ekgXPA8#t3yZUXeFqb>M=X-5p>UO8~cHMZ_&+JlZzJF|En5qm6m!BP~ GU;YD}6mCfX literal 0 HcmV?d00001 From bcdb37800db5914fa0b97b451c8100d0e2a07bfd Mon Sep 17 00:00:00 2001 From: bzoss Date: Wed, 27 May 2020 21:15:46 -0400 Subject: [PATCH 014/108] Shift to table lookup for brewing combinations. Fix issue with brewing only if all slots filled. --- mods/ITEMS/mcl_brewing/init.lua | 16 +++++-------- mods/ITEMS/mcl_potions/init.lua | 41 +++++++++++++++++++-------------- 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 3b8577a31c..b87ae04a10 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -73,9 +73,9 @@ end local function brewable(inv) local ingredient = inv:get_stack("input",1):get_name() - local stands = {"","",""} + local stands = {} local stand_size = inv:get_size("stand") - local was_alchemy = true + local was_alchemy = {false,false,false} for i=1,stand_size do @@ -84,14 +84,16 @@ local function brewable(inv) local alchemy = mcl_potions.get_alchemy(ingredient, bottle) if alchemy then stands[i] = alchemy + was_alchemy[i] = true else stands[i] = bottle - was_alchemy = false end end -- if any stand holds a new potion, return the list of new potions - if was_alchemy then return stands end + for i=1,table.getn(was_alchemy) do + if was_alchemy[i] then return stands end + end return false end @@ -205,12 +207,6 @@ local function brewing_stand_timer(pos, elapsed) fuel_totaltime = fuel.time end - -- for i=1, inv:get_size("stand") do - -- if stand_list[i]:is_empty() then - -- stand_timer = 0 - -- end - -- end - --update formspec local formspec = brewing_formspec diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index ac2d1c26c0..fe2e84a2d6 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -359,26 +359,33 @@ minetest.register_craftitem("mcl_potions:swiftness", { mcl_potions = {} +function key_in_table(table,key) + return table[key] ~= nil +end + +local water_table = { + ["mcl_nether:nether_wart_item"] = "mcl_potions:potion_awkward", + ["mcl_potions:fermented_spider_eye"] = "mcl_potions:weakness", +} +local awkward_table = { + ["mcl_potions:speckled_melon"] = "mcl_potions:healing", + ["mcl_farming:carrot_item_gold"] = "mcl_potions:night_vision", + ["mcl_core:sugar"] = "mcl_potions:swiftness", +} +local output_table = { + ["mcl_potions:potion_river_water"] = water_table, + ["mcl_potions:potion_water"] = water_table, + ["mcl_potions:potion_awkward"] = awkward_table, +} + -- Compare two ingredients for compatable alchemy function mcl_potions.get_alchemy(ingr, pot) - if pot == "mcl_potions:potion_river_water" or pot == "mcl_potions:potion_water" then - if ingr == "mcl_nether:nether_wart_item" then - return "mcl_potions:potion_awkward" - elseif ingr == "mcl_potions:fermented_spider_eye" then - return "mcl_potions:weakness" + if output_table[pot] ~= nil then + local brew_table = output_table[pot] + if brew_table[ingr] ~= nil then + return brew_table[ingr] end - - elseif pot == "mcl_potions:potion_awkward" then - if ingr == "mcl_potions:speckled_melon" then - return "mcl_potions:healing" - elseif ingr == "mcl_farming:carrot_item_gold" then - return "mcl_potions:night_vision" - elseif ingr == "mcl_core:sugar" then - return "mcl_potions:swiftness" - end - - else - return false end + return false end From 014f15b64308fbda28f11484f3edcb80e6944f99 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 29 May 2020 02:27:34 +0200 Subject: [PATCH 015/108] Clean up mcl_brewing file formats --- mods/ITEMS/mcl_brewing/depends.txt | 7 ------- mods/ITEMS/mcl_brewing/init.lua | 0 mods/ITEMS/mcl_brewing/locale/template.txt | 0 mods/ITEMS/mcl_brewing/mod.conf | 2 ++ .../textures/mcl_brewing_bottle_bg.png | Bin 1165 -> 108 bytes .../textures/mcl_brewing_bubbles.png | Bin 193 -> 155 bytes .../textures/mcl_brewing_bubbles_active.png | Bin 194 -> 153 bytes .../textures/mcl_brewing_burner.png | Bin 147 -> 109 bytes .../textures/mcl_brewing_burner_active.png | Bin 157 -> 111 bytes .../textures/mcl_brewing_fuel_bg.png | Bin 250 -> 124 bytes .../textures/mcl_brewing_inventory.png | Bin 1033 -> 488 bytes .../textures/mcl_brewing_potion_bg.png | Bin 1172 -> 114 bytes .../mcl_brewing/textures/mcl_brewing_side.png | Bin 342 -> 236 bytes .../mcl_brewing/textures/mcl_brewing_top.png | Bin 403 -> 211 bytes 14 files changed, 2 insertions(+), 7 deletions(-) delete mode 100755 mods/ITEMS/mcl_brewing/depends.txt mode change 100755 => 100644 mods/ITEMS/mcl_brewing/init.lua mode change 100755 => 100644 mods/ITEMS/mcl_brewing/locale/template.txt mode change 100755 => 100644 mods/ITEMS/mcl_brewing/mod.conf mode change 100755 => 100644 mods/ITEMS/mcl_brewing/textures/mcl_brewing_fuel_bg.png mode change 100755 => 100644 mods/ITEMS/mcl_brewing/textures/mcl_brewing_inventory.png diff --git a/mods/ITEMS/mcl_brewing/depends.txt b/mods/ITEMS/mcl_brewing/depends.txt deleted file mode 100755 index 73f7dce829..0000000000 --- a/mods/ITEMS/mcl_brewing/depends.txt +++ /dev/null @@ -1,7 +0,0 @@ -mcl_init -mcl_formspec -mcl_sounds -mcl_potions -mcl_mobitems -mcl_core? -screwdriver? diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua old mode 100755 new mode 100644 diff --git a/mods/ITEMS/mcl_brewing/locale/template.txt b/mods/ITEMS/mcl_brewing/locale/template.txt old mode 100755 new mode 100644 diff --git a/mods/ITEMS/mcl_brewing/mod.conf b/mods/ITEMS/mcl_brewing/mod.conf old mode 100755 new mode 100644 index de164abf92..e2e88d1b72 --- a/mods/ITEMS/mcl_brewing/mod.conf +++ b/mods/ITEMS/mcl_brewing/mod.conf @@ -1 +1,3 @@ name = mcl_brewing +depends = mcl_init, mcl_formspec, mcl_sounds, mcl_potions, mcl_mobitems +optional_depends = mcl_core, screwdriver diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bottle_bg.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bottle_bg.png index c0c4fd2be15e5849c00ebadbe188f162e56cb4a9..64032deaf428d8e97a4aaf67e35850904115120c 100644 GIT binary patch delta 89 zcmeC>%$Xn=%*4RJFkxbb8IWQt3GxdD(m;^6jC~@IQuK6j45?sDmQW~QH(Mp0}We1OOiX#br)c_vz(kVU}jqZK>SN!#vHaDcB6R2#d6+hT?3xWmu+V!N^rBw+gGYqAS#h z0SzTs?9mu)q|xGXwV|$A;hyf*{%A`T;gKHIcA;Q1!!tb#_ds#hE4reil^I#&id`t!jLIl-BxwSGi{k{1TcRWn zFu6?}Fku*nP$LF3H^G8~#%Lp5J)%C%HZ`l57(wEXwp3Zw103UTiZRii=NM8$jof>@ zBg$qR>GZUR;YJ=FdiVpY9gI#$^Eogj!o$;OHNM1u{(Ai4*@_Kc1vG(!!?Tybq*>WUgtt7}V7)S#_-ZJ)yKq|n~#WAFU@#%zvoDB{FN7iWl zEjK%4<9}l10bqX;`=Qw)-{;7#YYKbGAY>Z^vcuEW&t)C6Q$iB}f(JIX delta 176 zcmV;h08js$0l@)~8Gi-<007s*{OwtZr_Z#`$aSz=wwr5i7^{ z2A|~E9hP5zcC?GF`K3R^lbJl|X!6y~P0tvimYRG5MuLy8swwaenuylj!e7nOHp1*a e9y8}UW;g++3vCld-LqN%0000>WUgtt7}V7)S#_-ZJ)yK+4b4#WAFU@##cHwgV0VM}DpP z`TzVjmV#85%xJv^;hem_-zppLHEf#7UOn&M{k{e}wyfar^}fva^B@0jEf?IqZCzHr lY=xEJmoFc-aUI<}hr4XXa<;Xx^FTIuy85}Sb4p-r0s!h!H5vc_ delta 177 zcmV;i08amz0m1>08Gi-<007s*{OD0Cd94voy3w50{48`Rm?_4~t;tnT{`` z%Or=@Sc+tc3CVithe#sIRozqW^#H~>JjNIV07OKWLis8PnfUA|S8$H)400000NkvXXu0mjfhVMuJ diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_burner.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_burner.png index e2e8e8afeb20074143562bc5bf4e7722417e91de..b15bd5e3e417a91902ad35d8c8e242391e3466be 100644 GIT binary patch delta 90 zcmbQtm^(o-go%NH!Dj1gb0Ec5666;Qq=6uB8T&*arR3@27*fHQ%+T~dL4c8s;~%3z nLs!#Jjs_(Ytrp3+84I}>o;-U~;xG8f5Twh~)z4*}Q$iB}8KN21 delta 128 zcmd0u%s4@^ij9GRVe|Ex1R%v(;1OBOz`%C|gc+x5^GO2*T|HeKLnNlYy=cgIKtbTZ zf!|Wj?0geiSaKG;vA$TAkdkvO#m6B{?Ml=^3FV}dmg+C|How+hxb<6`Y`ul3mu7#2 debe8A(oE(u+IzC2t$+qHc)I$ztaD0e0swWbEMWiu diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_burner_active.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_burner_active.png index 93655b67322e5ed2a483a4017747af703f9682ea..b5782d0fad0191fa07b2e2d7b6b769b6f23f3d7a 100644 GIT binary patch delta 92 zcmbQsm_I=>jERAP!Dj1gb0Ec5666;Qq=6uB8T&*arQ+%07*fHQ%+T~dL4c8srqFsE>q3&}i)cGcC<-TP_X9u`5t3B_znr%YL8bB(j-Hs7q}Elc0O p`*2KtAJ>D>&UBdiaeD`A?mNHFD0%aZU1{6X3YWnFR%m$K$w?D+S)in;lg VYTi|UCT)-#JYD@<);T3K0RY}WNXGyG diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_inventory.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_inventory.png old mode 100755 new mode 100644 index 02c9dc44d104929c726074bb22b5105090b9c724..66f0c12259ba3688909c8de62b86f9366ffff580 GIT binary patch delta 474 zcmV<00VV#42rFrlgRctp z^6=$QjSC@+bAK_^GXZY$#Zb=@#a3^J7UiRg*O=u<5X=vX$A)7 z-JULvAr*7p-t{heWF^5C@G~sGgYzEauDFR&k3_-XwQTmZM9_#P#|M2x|sLAVP>x!-B9(r1IGOGRg(QUWu_WM^AR_?!l zTq3!qzP|tJUts9Wef)98RzB^3xhAFm(tr7^dEF9{y-Xt6XJg$huesCXnU{$q_r!Mp ze&u4f`N#b#S)mTYvUQsu^@~j0y46Z0Xl{?*)ug}M)pN2-*Dwmd>RNO7p}@K4#T*a! zpQw5!bYj};2?wq%3S?P-222Kor?d(j`dY=SxJFyb^+T7AuGIeh`@;jpLcJP4cVChAkZDLfu*PkAQVuxFfjdnw5%y$)=*Kf(P}}vM*{hg=f6W;5n%GBlT&Q zj-b!#wXVtWbN|-qH%(uad(A?I?_tqSk>^JhzRSkCzCwxTX+_V&jgf0P^KWs02%R6gz#ef3mey3u-(gFBzdG-!4tq?x|f zt2pBtx;tT#@WGdz4+LEdHXo0=?ixIQS8ZHR=0B@f&pLsMo?YInR53ek{xVmC&4LHd zc(E8)uK|i1n>4kbx?5kDe=Yv#*Vhfq$$v8|MD{y({$#$N*1QKbLh*2~7a~AmxDo diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_potion_bg.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_potion_bg.png index 818e41d4b8bf2c2adb942112951b8a7232753acc..5dad86d62c443524a2ee85cac956ddae3cbfcbf3 100644 GIT binary patch delta 95 zcmbQjSu{a1l8J$VVZy`=Ga$uQ666;Qq=6uB8T&*arS9qC7*fHQETK@q#?ukp#n^Gx sd70{!vP+UO4I8q24BnUs@Tu-%VlXzml-MiyE(fI5)78&qol`;+0D&hOqW}N^ literal 1172 zcmds#v1(OO5Jh)P2qv1CG8k+GK@e@`2UOm}1VRW&EYcaoDXaooiHMrY&L+kDfkhCT zKuQY>g(>m}qJLo_!a-xSkw&XJx!$H`Wkhw5_@gaVW@M2ocA;Q1Dx=7eqzM2njuSL) ziIP0P;Sa2KFghX4=fIQ*4^N}j_!9s5>&c6k*Q6Oe-`Uy)e)#Jx!Z{}AI7f$w%u78@p{QlwRUuSdY or<5xPcYhvDKiqhIaOu_e3p)S(^~dSv+)20Im~Krz-hcG=50BzPYXATM diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_side.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_side.png index 0c15ddd8ad3d7497d363f5db40e4053229cd177a..52530bc21a82b86ff2943c41cdb0fe2d5e63a7f0 100644 GIT binary patch delta 220 zcmcb{^oDVQL_G^L0|Ud`yN`l^lx~1eh%1mjaNxlI&1wJ7%=|yoc%8S{e;`Qv|G$Bu zy`g65^a%wyX_Gsf>q-i<6BBp0SZxDpU@Qsp3ubV5b|VeQ$@O$`45?r=Ik8djkO7aw zMS1NP8p3J<(itrM4z6q2Dw(Tm`Gm{g%N5woQ$G+|){%dl-{Wb2lCb%a3dZ>w%kmc- z&Aa6o-IdN?@@4mS!;ROuA8}`Q`KD;iJXpRt?c5#9&rix?%8C_`xP%XYuaJg<1CUEl&{1%LZ~#ug0ZgCtsVGteIf~K{ z6j2QgUc9@`reK=c(f{-R?9K{KR8^(T`TFw(fVcBogO_C~Zhw!}+!oOJOm#lfV>rN> zE8;mUo`de5fE6DLxF~`YOJMhOW20lg+2t4kRn>Mj6SSg>V@)u*tZlosEzre@JlEe^ zM1s diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_top.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_top.png index 4ed94d460a248da9fc44e73762782d2e4b26d4e1..c62de1ec0615146d51091bc7ec56beeb77b1a303 100644 GIT binary patch delta 195 zcmV;!06hPb1JePJ7=Hu<0002(-QrRJ0016POjJbx004)8e13FslZk_+mymF5X8-^H zYhhu)z`*~20KMs^Gynhq0d!JMQvg8b*k%9#0Aoo+K~#7FUB&?h!Z8%U;a?F2cnt#d zmQ@ERy2jh+0PO_n0y73cM^2u>{{tVe(%TXKv6pB4nJL4w$viXKJF@^yI#6)6D7;xbaI5|kdXviZBhM9?h zfl+H1NM9bLLmfyTl$2`lOz-91d+xa>Cq)b%s--}A64SP@O@D*q>=EP1l)I;9YP&Zb zM*uKiNB}NxN{lDdU2X9M%9Hrg$2N_fgTE@sSQ!BN{k~T7XM%9Rb!Yo4$R1jlwx!>D zLkJNh)en-2L6rdEBre!_!oRU8J?V_p?e$eKU&x42xqJb~aU!V`LIk~TNB={E(*VBo zG3}M>xqN}m#(fZ@;ecGe5XppX8Y_Y@G$+m}y>3UdZ^BbcKEyj`=NFp9Q_Ho9#Y&yg zaKL;aVkG|RJF1}BYSXBd@zhc?ZzJ@`mp+YJnPR2B_Tc&P9@{kZ7Ujif iUwKlW+o+Xs-5Ebw)`Crohbj*M0000 Date: Fri, 29 May 2020 02:28:44 +0200 Subject: [PATCH 016/108] Remove dead code in mcl_brewing --- mods/ITEMS/mcl_brewing/init.lua | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index b87ae04a10..e4a6ebbcb2 100644 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -4,7 +4,6 @@ local function active_brewing_formspec(fuel_percent, item_percent) return "size[9,8.75]".. "background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory.png]".. - -- "background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory_active.png]".. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. @@ -110,7 +109,6 @@ local function brewing_stand_timer(pos, elapsed) local input_item = meta:get_string("input_item") or "" local stand_timer = meta:get_float("stand_timer") or 0 - -- local stand_items = meta:get_list("stand_items") or {"","",""} local inv = meta:get_inventory() @@ -216,10 +214,8 @@ local function brewing_stand_timer(pos, elapsed) local fuel_percent = math.floor(fuel_time/fuel_totaltime*100) local brew_percent = math.floor(stand_timer/BREW_TIME*100) formspec = active_brewing_formspec(fuel_percent, brew_percent*4 % 100) - -- swap_node(pos, "mcl_brewing:stand_active") result = true else - -- swap_node(pos, "mcl_brewing:stand") minetest.get_node_timer(pos):stop() end @@ -227,7 +223,6 @@ local function brewing_stand_timer(pos, elapsed) meta:set_float("fuel_totaltime", fuel_totaltime) meta:set_float("fuel_time", fuel_time) meta:set_float("stand_timer", stand_timer) - -- meta:set_list("stand_items", stand_list) meta:set_string("formspec", formspec) return result @@ -390,14 +385,6 @@ local brewing_stand_def = { end end, - -- allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - -- local name = player:get_player_name() - -- if minetest.is_protected(pos, name) then - -- minetest.record_protection_violation(pos, name) - -- return 0 - -- end - -- end, - on_metadata_inventory_put = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) minetest.get_node_timer(pos):start(1.0) @@ -414,8 +401,6 @@ local brewing_stand_def = { inv:set_size("input", 1) inv:set_size("fuel", 1) inv:set_size("stand", 3) - -- inv:set_size("stand2", 1) - -- inv:set_size("stand3", 1) local form = brewing_formspec meta:set_string("formspec", form) end, @@ -451,12 +436,6 @@ brewing_stand_def._tt_help = S("Repair and rename items") minetest.register_node("mcl_brewing:stand", brewing_stand_def) --- local brewing_stand_active_def = brewing_stand_def --- brewing_stand_active_def.light_source = 8 --- brewing_stand_active_def.drop = "mcl_brewing:stand" --- brewing_stand_active_def.groups = {not_in_creative_inventory=1, pickaxey=1, falling_node=1, falling_node_damage=1, crush_after_fall=1, deco_block=1, brewing_stand=1} --- minetest.register_node("mcl_brewing:stand_active", brewing_stand_active_def) - if minetest.get_modpath("mcl_core") then minetest.register_craft({ output = "mcl_brewing:stand", @@ -467,15 +446,3 @@ if minetest.get_modpath("mcl_core") then }) end - --- Legacy -minetest.register_lbm({ - label = "Update brewing_stand formspecs (0.60.0", - name = "mcl_brewing:update_formspec_0_60_0", - --nodenames = { "group:brewing_stand" }, - run_at_every_load = false, - action = function(pos, node) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", brewing_formspec) - end, -}) From d3872b713c46b0d1fe053b7baab0693100d3ea12 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 29 May 2020 02:36:15 +0200 Subject: [PATCH 017/108] Add bzoss to credits for brewing stand --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0a2c76bc8c..07a4b437e4 100644 --- a/README.md +++ b/README.md @@ -201,6 +201,7 @@ There are so many people to list (sorry). Check out the respective mod directori * [Rootyjr](https://github.com/Rootyjr): Fishing rod and bugfixes * [aligator](https://github.com/aligator): Improvement of doors * [ryvnf](https://github.com/ryvnf): Explosion mechanics +* bzoss : Brewing Stand * Lots of other people: TO BE WRITTEN (see mod directories for details) ### Graphics From f6ccf1fe413d7f6bd44fbb309d0f45e43511177b Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 29 May 2020 02:49:39 +0200 Subject: [PATCH 018/108] Mark brewing stuff as WIP --- mods/MISC/mcl_wip/depends.txt | 2 ++ mods/MISC/mcl_wip/init.lua | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/mods/MISC/mcl_wip/depends.txt b/mods/MISC/mcl_wip/depends.txt index 66804f107a..ea80f99c1d 100644 --- a/mods/MISC/mcl_wip/depends.txt +++ b/mods/MISC/mcl_wip/depends.txt @@ -6,3 +6,5 @@ doc_identifier mobs_mc mcl_comparators mcl_minecarts +mcl_potions +mcl_brewing diff --git a/mods/MISC/mcl_wip/init.lua b/mods/MISC/mcl_wip/init.lua index 062b5e489e..996db3cfe5 100644 --- a/mods/MISC/mcl_wip/init.lua +++ b/mods/MISC/mcl_wip/init.lua @@ -13,6 +13,11 @@ local wip_items = { "mobs_mc:wither", "mobs_mc:parrot", "mobs_mc:witch", + "mcl_brewing:stand", + "mcl_potions:healing", + "mcl_potions:night_vision", + "mcl_potions:swiftness", + "mcl_potions:weakness", "screwdriver:screwdriver", } local experimental_items = { From 02540a5193114535417f58390f3f31f77ad802cb Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 29 May 2020 02:50:14 +0200 Subject: [PATCH 019/108] Blaze powder is no fuel --- mods/ITEMS/mcl_mobitems/init.lua | 6 ------ 1 file changed, 6 deletions(-) diff --git a/mods/ITEMS/mcl_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index 0b4d47e0de..8f4c166809 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -428,12 +428,6 @@ minetest.register_craft({ burntime = 120, }) -minetest.register_craft({ - type = "fuel", - recipe = "mcl_mobitems:blaze_powder", - burntime = 120, -}) - minetest.register_craft({ output = 'mcl_mobitems:slimeball 9', recipe = {{"mcl_core:slimeblock"}}, From a5dc19cd7c9aadf0af663adf7cfa34771a8da135 Mon Sep 17 00:00:00 2001 From: bzoss Date: Mon, 8 Jun 2020 17:47:53 -0400 Subject: [PATCH 020/108] Initial commit to correct branch... --- mods/CORE/flowlib/README.txt | 2 +- mods/CORE/mcl_explosions/init.lua | 41 +- mods/ENVIRONMENT/mcl_weather/skycolor.lua | 12 +- mods/HELP/mcl_craftguide/init.lua | 4 +- mods/ITEMS/REDSTONE/mcl_observers/init.lua | 1 + mods/ITEMS/mcl_brewing/depends.txt | 7 + mods/ITEMS/mcl_brewing/init.lua | 900 +++++++++++++++--- mods/ITEMS/mcl_brewing/locale/template.txt | 0 mods/ITEMS/mcl_brewing/mod.conf | 2 - .../sounds/mcl_brewing_complete.ogg | Bin 0 -> 38394 bytes .../textures/mcl_brewing_bottle_bg.png | Bin 108 -> 1165 bytes .../textures/mcl_brewing_bubbles.png | Bin 155 -> 193 bytes .../textures/mcl_brewing_bubbles_active.png | Bin 153 -> 194 bytes .../textures/mcl_brewing_burner.png | Bin 109 -> 147 bytes .../textures/mcl_brewing_burner_active.png | Bin 111 -> 157 bytes .../textures/mcl_brewing_fuel_bg.png | Bin 124 -> 250 bytes .../textures/mcl_brewing_inventory.png | Bin 488 -> 1033 bytes .../textures/mcl_brewing_potion_bg.png | Bin 114 -> 1172 bytes .../mcl_brewing/textures/mcl_brewing_side.png | Bin 236 -> 404 bytes .../mcl_brewing/textures/mcl_brewing_top.png | Bin 211 -> 404 bytes mods/ITEMS/mcl_buckets/init.lua | 1 + mods/ITEMS/mcl_chests/init.lua | 74 +- mods/ITEMS/mcl_core/functions.lua | 213 ++++- mods/ITEMS/mcl_core/nodes_liquid.lua | 4 + mods/ITEMS/mcl_end/chorus_plant.lua | 1 + mods/ITEMS/mcl_mobitems/init.lua | 1 + mods/ITEMS/mcl_potions/depends.txt | 2 + mods/ITEMS/mcl_potions/init.lua | 484 +++++++++- .../sounds/mcl_potions_breaking_glass.ogg | Bin 0 -> 45330 bytes .../sounds/mcl_potions_drinking.ogg | Bin 0 -> 23932 bytes .../mcl_potions/textures/hb_potion_bar.png | Bin 0 -> 91 bytes .../textures/hb_swiftness_bgicon.png | Bin 0 -> 1157 bytes .../textures/hb_swiftness_icon.png | Bin 0 -> 1167 bytes .../textures/mcl_potions_splash_bottle.png | Bin 0 -> 1210 bytes .../textures/mcl_potions_splash_overlay.png | Bin 0 -> 1172 bytes .../textures/mcl_potions_sprite.png | Bin 0 -> 1181 bytes mods/ITEMS/mcl_tnt/init.lua | 6 +- mods/MAPGEN/mcl_structures/init.lua | 19 +- .../locale/mcl_structures.de.tr | 1 - .../locale/mcl_structures.es.tr | 1 - .../locale/mcl_structures.fr.tr | 1 - .../mcl_structures_desert_temple.mts | Bin 1354 -> 1460 bytes mods/MISC/mcl_wip/depends.txt | 3 +- mods/MISC/mcl_wip/init.lua | 6 +- 44 files changed, 1487 insertions(+), 299 deletions(-) create mode 100755 mods/ITEMS/mcl_brewing/depends.txt mode change 100644 => 100755 mods/ITEMS/mcl_brewing/init.lua mode change 100644 => 100755 mods/ITEMS/mcl_brewing/locale/template.txt mode change 100644 => 100755 mods/ITEMS/mcl_brewing/mod.conf create mode 100644 mods/ITEMS/mcl_brewing/sounds/mcl_brewing_complete.ogg mode change 100644 => 100755 mods/ITEMS/mcl_brewing/textures/mcl_brewing_fuel_bg.png mode change 100644 => 100755 mods/ITEMS/mcl_brewing/textures/mcl_brewing_inventory.png create mode 100755 mods/ITEMS/mcl_potions/sounds/mcl_potions_breaking_glass.ogg create mode 100644 mods/ITEMS/mcl_potions/sounds/mcl_potions_drinking.ogg create mode 100644 mods/ITEMS/mcl_potions/textures/hb_potion_bar.png create mode 100644 mods/ITEMS/mcl_potions/textures/hb_swiftness_bgicon.png create mode 100644 mods/ITEMS/mcl_potions/textures/hb_swiftness_icon.png create mode 100644 mods/ITEMS/mcl_potions/textures/mcl_potions_splash_bottle.png create mode 100644 mods/ITEMS/mcl_potions/textures/mcl_potions_splash_overlay.png create mode 100644 mods/ITEMS/mcl_potions/textures/mcl_potions_sprite.png diff --git a/mods/CORE/flowlib/README.txt b/mods/CORE/flowlib/README.txt index 5425ce96e8..516f7bf603 100644 --- a/mods/CORE/flowlib/README.txt +++ b/mods/CORE/flowlib/README.txt @@ -1,4 +1,4 @@ -Waterlib +Flowlib ================ Simple flow functions for use in Minetest mods by Qwertymine3 diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index bd697208ca..9a98dc6dae 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -36,9 +36,10 @@ local N_EXPOSURE_RAYS = 16 minetest.register_on_mods_loaded(function() -- Store blast resistance values by content ids to improve performance. for name, def in pairs(minetest.registered_nodes) do - node_blastres[minetest.get_content_id(name)] = def._mcl_blast_resistance or 0 - node_on_blast[minetest.get_content_id(name)] = def.on_blast - node_walkable[minetest.get_content_id(name)] = def.walkable + local id = minetest.get_content_id(name) + node_blastres[id] = def._mcl_blast_resistance or 0 + node_on_blast[id] = def.on_blast + node_walkable[id] = def.walkable end end) @@ -183,9 +184,7 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance, fire, local cid = data[idx] local br = node_blastres[cid] - local hash = (npos_z + 32768) * 65536 * 65536 + - (npos_y + 32768) * 65536 + - npos_x + 32768 + local hash = minetest.hash_node_position({x=npos_x, y=npos_y, z=npos_z}) rpos_x = rpos_x + STEP_LENGTH * rdir_x rpos_y = rpos_y + STEP_LENGTH * rdir_y @@ -305,6 +304,8 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance, fire, end end + local airs, fires = {}, {} + -- Remove destroyed blocks and drop items for hash, idx in pairs(destroy) do local do_drop = not creative_mode and math.random() <= drop_chance @@ -314,7 +315,8 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance, fire, if do_drop or on_blast ~= nil then local npos = minetest.get_position_from_hash(hash) if on_blast ~= nil then - remove = on_blast(npos, 1.0) + on_blast(npos, 1.0) + remove = false else local name = minetest.get_name_from_content_id(data[idx]) local drop = minetest.get_node_drops(name, "") @@ -329,21 +331,34 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance, fire, end if remove then if mod_fire and fire and math.random(1, 3) == 1 then - data[idx] = CONTENT_FIRE + table.insert(fires, minetest.get_position_from_hash(hash)) else - data[idx] = minetest.CONTENT_AIR + table.insert(airs, minetest.get_position_from_hash(hash)) end end end + -- We use bulk_set_node instead of LVM because we want to have on_destruct and + -- on_construct being called + if #airs > 0 then + minetest.bulk_set_node(airs, {name="air"}) + end + if #fires > 0 then + minetest.bulk_set_node(fires, {name="mcl_core:fire"}) + end + -- Update falling nodes + for a=1, #airs do + local p = airs[a] + minetest.check_for_falling({x=p.x, y=p.y+1, z=p.z}) + end + for f=1, #fires do + local p = fires[f] + minetest.check_for_falling({x=p.x, y=p.y+1, z=p.z}) + end -- Log explosion minetest.log('action', 'Explosion at ' .. minetest.pos_to_string(pos) .. ' with strength ' .. strength .. ' and radius ' .. radius) - -- Update environment - vm:set_data(data) - vm:write_to_map(data) - vm:update_liquids() end -- Create an explosion with strength at pos. diff --git a/mods/ENVIRONMENT/mcl_weather/skycolor.lua b/mods/ENVIRONMENT/mcl_weather/skycolor.lua index d32c028098..a794107399 100644 --- a/mods/ENVIRONMENT/mcl_weather/skycolor.lua +++ b/mods/ENVIRONMENT/mcl_weather/skycolor.lua @@ -1,3 +1,5 @@ +local mods_loaded = false + mcl_weather.skycolor = { -- Should be activated before do any effect. active = true, @@ -169,7 +171,11 @@ mcl_weather.skycolor = { -- Simply getter. Ether returns user given players list or get all connected players if none provided get_players = function(players) if players == nil or #players == 0 then - players = minetest.get_connected_players() + if mods_loaded then + players = minetest.get_connected_players() + elseif players == nil then + players = {} + end end return players end, @@ -222,3 +228,7 @@ minetest.register_on_respawnplayer(initsky) mcl_worlds.register_on_dimension_change(function(player) mcl_weather.skycolor.update_sky_color({player}) end) + +minetest.register_on_mods_loaded(function() + mods_loaded = true +end) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index 5d9c233599..86bd742a99 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -1088,7 +1088,9 @@ if progressive_mode then M.after(POLL_FREQ, poll_new_items) end - poll_new_items() + M.register_on_mods_loaded(function() + M.after(1, poll_new_items) + end) mcl_craftguide.add_recipe_filter("Default progressive filter", progressive_filter) diff --git a/mods/ITEMS/REDSTONE/mcl_observers/init.lua b/mods/ITEMS/REDSTONE/mcl_observers/init.lua index 885e8599e4..bdb3d5bdc6 100644 --- a/mods/ITEMS/REDSTONE/mcl_observers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_observers/init.lua @@ -236,6 +236,7 @@ mesecon.register_node("mcl_observers:observer_up", -- Regularily check the observer nodes. -- TODO: This is rather slow and clunky. Find a more efficient way to do this. minetest.register_abm({ + label = "Observer node check", nodenames = {"mcl_observers:observer_off", "mcl_observers:observer_down_off", "mcl_observers:observer_up_off"}, interval = 1, chance = 1, diff --git a/mods/ITEMS/mcl_brewing/depends.txt b/mods/ITEMS/mcl_brewing/depends.txt new file mode 100755 index 0000000000..73f7dce829 --- /dev/null +++ b/mods/ITEMS/mcl_brewing/depends.txt @@ -0,0 +1,7 @@ +mcl_init +mcl_formspec +mcl_sounds +mcl_potions +mcl_mobitems +mcl_core? +screwdriver? diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua old mode 100644 new mode 100755 index e4a6ebbcb2..5535cee8e9 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -1,9 +1,10 @@ local S = minetest.get_translator("mcl_brewing_stand") -local function active_brewing_formspec(fuel_percent, item_percent) +local function active_brewing_formspec(fuel_percent, brew_percent) return "size[9,8.75]".. "background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory.png]".. + -- "background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory_active.png]".. "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. @@ -24,7 +25,7 @@ local function active_brewing_formspec(fuel_percent, item_percent) (100-fuel_percent)..":mcl_brewing_burner_active.png^[transformR270]".. "image[2.76,1.4;1,2.15;mcl_brewing_bubbles.png^[lowpart:".. - (item_percent)..":mcl_brewing_bubbles_active.png]".. + (brew_percent)..":mcl_brewing_bubbles_active.png]".. "listring[current_player;main]".. "listring[current_name;fuel]".. @@ -102,20 +103,17 @@ local function brewing_stand_timer(pos, elapsed) -- Inizialize metadata local meta = minetest.get_meta(pos) - local fuel_time = meta:get_float("fuel_time") or 0 - local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 - local BREW_TIME = 30 -- all brews take max of 10 + local fuel_timer = meta:get_float("fuel_timer") or 0 + local BREW_TIME = 20 -- all brews brew the same + local BURN_TIME = BREW_TIME * 10 local input_item = meta:get_string("input_item") or "" - local stand_timer = meta:get_float("stand_timer") or 0 - + local fuel = meta:get_float("fuel") or 0 local inv = meta:get_inventory() local input_list, stand_list, fuel_list - local fuel - local update = true while update do @@ -136,73 +134,60 @@ local function brewing_stand_timer(pos, elapsed) -- return 1 -- end -- end + brew_output = brewable(inv) + if fuel ~= 0 and brew_output then - local brew_output = brewable(inv) - - if fuel_time < fuel_totaltime then - - fuel_time = fuel_time + elapsed - - if brew_output then - - stand_timer = stand_timer + elapsed - -- Replace the stand item with the brew result - if stand_timer >= BREW_TIME then - - local input_count = inv:get_stack("input",1):get_count() - if (input_count-1) ~= 0 then - inv:set_stack("input",1,inv:get_stack("input",1):get_name().." "..(input_count-1)) - else - inv:set_stack("input",1,"") - end - - for i=1, inv:get_size("stand") do - if brew_output[i] then - minetest.sound_play("mcl_potions_bottle_fill", {pos=pos, gain=0.4, max_hear_range=16}, true) - inv:set_stack("stand", i, brew_output[i]) - minetest.sound_play("mcl_potions_bottle_pour", {pos=pos, gain=0.6, max_hear_range=16}, true) - end - end - stand_timer = 0 - update = false -- stop the update if brew is complete - end + fuel_timer = fuel_timer + elapsed + stand_timer = stand_timer + elapsed + if fuel_timer >= BURN_TIME then --replace with more fuel + fuel = 0 --force a new fuel grab + fuel_timer = 0 end + -- Replace the stand item with the brew result + if stand_timer >= BREW_TIME then - else --get more fuel from fuel_list - - local after_fuel - fuel, after_fuel = minetest.get_craft_result({method="fuel", width=1, items=fuel_list}) - - if brew_output then - - if fuel.time == 0 then --no valid fuel, reset timers - - fuel_totaltime = 0 - stand_timer = 0 - - -- only allow blaze powder fuel - elseif inv:get_stack("fuel",1):get_name() == "mcl_mobitems:blaze_powder" then -- Grab another fuel - inv:set_stack("fuel", 1, after_fuel.items[1]) - - update = true - fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime) - stand_timer = stand_timer + elapsed - + local input_count = inv:get_stack("input",1):get_count() + if (input_count-1) ~= 0 then + inv:set_stack("input",1,inv:get_stack("input",1):get_name().." "..(input_count-1)) + else + inv:set_stack("input",1,"") end - else --if no output potion, stop the process - fuel_total_time = 0 + for i=1, inv:get_size("stand") do + if brew_output[i] then + minetest.sound_play("mcl_brewing_complete", {pos=pos, gain=0.4, max_hear_range=16}, true) + inv:set_stack("stand", i, brew_output[i]) + minetest.sound_play("mcl_potions_bottle_pour", {pos=pos, gain=0.6, max_hear_range=16}, true) + end + end stand_timer = 0 + update = false -- stop the update if brew is complete end - fuel_time = 0 - end - elapsed = 0 - end - if fuel and fuel_totaltime > fuel.time then - fuel_totaltime = fuel.time + elseif fuel == 0 then --get more fuel from fuel_list + + -- only allow blaze powder fuel + local fuel_name = inv:get_stack("fuel",1):get_name() + local fuel_count = inv:get_stack("fuel",1):get_count() + + if fuel_name == "mcl_mobitems:blaze_powder" then -- Grab another fuel + + if (fuel_count-1) ~= 0 then + inv:set_stack("fuel",1,fuel_name.." "..(fuel_count-1)) + else + inv:set_stack("fuel",1,"") + end + update = true + fuel = 1 + else -- no fuel available + update = false + end + + end + + elapsed = 0 end --update formspec @@ -210,19 +195,19 @@ local function brewing_stand_timer(pos, elapsed) local result = false - if fuel_totaltime ~= 0 then - local fuel_percent = math.floor(fuel_time/fuel_totaltime*100) + if fuel_timer ~= 0 then + local fuel_percent = math.floor(fuel_timer/BURN_TIME*100 % BURN_TIME) local brew_percent = math.floor(stand_timer/BREW_TIME*100) - formspec = active_brewing_formspec(fuel_percent, brew_percent*4 % 100) + formspec = active_brewing_formspec(fuel_percent, brew_percent*1 % 100) result = true else minetest.get_node_timer(pos):stop() end - - meta:set_float("fuel_totaltime", fuel_totaltime) - meta:set_float("fuel_time", fuel_time) + meta:set_float("fuel_timer", fuel_timer) meta:set_float("stand_timer", stand_timer) + meta:set_float("fuel", fuel) + -- meta:set_list("stand_items", stand_list) meta:set_string("formspec", formspec) return result @@ -300,14 +285,677 @@ if minetest.get_modpath("screwdriver") then on_rotate = screwdriver.rotate_simple end -local brewing_stand_def = { - groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1}, - tiles = {"mcl_brewing_top.png", --top - "mcl_brewing_base.png", --bottom - "mcl_brewing_side.png", --right - "mcl_brewing_side.png", --left - "mcl_brewing_side.png", --back - "mcl_brewing_side.png^[transformFX"}, --front +local doc_string = + S("To use an brewing_stand, rightclick it. An brewing_stand has 2 input slots (on the left) and one output slot.").."\n".. + S("To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.").."\n".. + S("There are two possibilities to repair tools (and armor):").."\n".. + S("• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.").."\n".. + S("• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.").."\n".. + S("Armor counts as a tool. It is possible to repair and rename a tool in a single step.").."\n\n".. + S("The brewing_stand has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the brewing_stand gets damaged. brewing_stand also have a chance of being damaged when they fall by more than 1 block. If a very damaged brewing_stand is damaged again, it is destroyed.") +local tiles = {"mcl_brewing_top.png", --top + "mcl_brewing_base.png", --bottom + "mcl_brewing_side.png", --right + "mcl_brewing_side.png", --left + "mcl_brewing_side.png", --back + "mcl_brewing_side.png^[transformFX"} --front +local allow_put = function(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + else + return stack:get_count() + end +end +local on_put = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local str = "" + for i=1, inv:get_size("stand") do + local stack = inv:get_stack("stand", i) + if not stack:is_empty() then + str = str.."1" + else str = str.."0" + end + end + minetest.swap_node(pos, {name = "mcl_brewing:stand_"..str}) + minetest.get_node_timer(pos):start(1.0) + --some code here to enforce only potions getting placed on stands +end +local after_dig = function(pos, oldnode, oldmetadata, digger) + local meta = minetest.get_meta(pos) + local meta2 = meta + meta:from_table(oldmetadata) + drop_brewing_stand_items(pos, meta) + meta:from_table(meta2:to_table()) +end +local allow_take = function(pos, listname, index, stack, player) + local name = player:get_player_name() + if minetest.is_protected(pos, name) then + minetest.record_protection_violation(pos, name) + return 0 + else + return stack:get_count() + end +end +local on_take = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) +end + +minetest.register_node("mcl_brewing:stand_000", { + description = S("Brewing Stand"), + _doc_items_longdesc = S("The stand allows you to brew potions!"), + _doc_items_usagehelp = doc_string, + _tt_help = S("Brew Potions"), + groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 0, not_in_craft_guide = 0}, + tiles = tiles, + drop = {"mcl_brewing:stand"}, + paramtype = "light", + sunlight_propagates = true, + is_ground_content = false, + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + + {-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume + { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base + {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base + {-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base + + -- {-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1 + -- {-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1 + -- {-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1 + -- {-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1 + -- {-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1 + + {-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1 + {-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1 + {-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1 + {-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1 + + + -- {7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2 + -- {6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2 + -- {5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2 + -- {4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2 + -- {3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2 + + {5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2 + {4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2 + {3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2 + {2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2 + + -- {0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3 + -- {0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3 + + {0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3 + {0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3 + {0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3 + } + }, + sounds = mcl_sounds.node_sound_metal_defaults(), + _mcl_blast_resistance = 1200, + _mcl_hardness = 5, + + after_dig_node = after_dig, + allow_metadata_inventory_take = allow_take, + allow_metadata_inventory_put = allow_put, + on_metadata_inventory_put = on_put, + on_metadata_inventory_take = on_take, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("input", 1) + inv:set_size("fuel", 1) + inv:set_size("stand", 3) + -- inv:set_size("stand2", 1) + -- inv:set_size("stand3", 1) + local form = brewing_formspec + meta:set_string("formspec", form) + end, + + on_receive_fields = function(pos, formname, fields, sender) + local sender_name = sender:get_player_name() + if minetest.is_protected(pos, sender_name) then + minetest.record_protection_violation(pos, sender_name) + return + end + end, + + on_timer = brewing_stand_timer, + on_rotate = on_rotate, +}) + +minetest.register_alias("mcl_brewing:stand", "mcl_brewing:stand_000") + +minetest.register_node("mcl_brewing:stand_100", { + description = S("Brewing Stand"), + _doc_items_longdesc = S("The stand allows you to brew potions!"), + _doc_items_usagehelp = doc_string, + _tt_help = S("Brew Potions"), + groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + tiles = tiles, + drop = {"mlc_brewing:stand"}, + paramtype = "light", + sunlight_propagates = true, + is_ground_content = false, + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + + {-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume + { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base + {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base + {-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base + + {-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1 + {-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1 + {-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1 + {-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1 + {-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1 + + {-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1 + {-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1 + {-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1 + {-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1 + + + -- {7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2 + -- {6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2 + -- {5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2 + -- {4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2 + -- {3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2 + + {5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2 + {4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2 + {3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2 + {2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2 + + -- {0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3 + -- {0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3 + + {0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3 + {0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3 + {0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3 + } + }, + sounds = mcl_sounds.node_sound_metal_defaults(), + _mcl_blast_resistance = 1200, + _mcl_hardness = 5, + + after_dig_node = after_dig, + allow_metadata_inventory_take = allow_take, + allow_metadata_inventory_put = allow_put, + on_metadata_inventory_put = on_put, + on_metadata_inventory_take = on_take, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("input", 1) + inv:set_size("fuel", 1) + inv:set_size("stand", 3) + -- inv:set_size("stand2", 1) + -- inv:set_size("stand3", 1) + local form = brewing_formspec + meta:set_string("formspec", form) + end, + + on_receive_fields = function(pos, formname, fields, sender) + local sender_name = sender:get_player_name() + if minetest.is_protected(pos, sender_name) then + minetest.record_protection_violation(pos, sender_name) + return + end + end, + + on_timer = brewing_stand_timer, + on_rotate = on_rotate, +}) +minetest.register_node("mcl_brewing:stand_010", { + description = S("Brewing Stand"), + _doc_items_longdesc = S("The stand allows you to brew potions!"), + _doc_items_usagehelp = doc_string, + _tt_help = S("Brew Potions"), + groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + tiles = tiles, + drop = {"mlc_brewing:stand"}, + paramtype = "light", + sunlight_propagates = true, + is_ground_content = false, + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + + {-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume + { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base + {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base + {-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base + + -- {-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1 + -- {-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1 + -- {-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1 + -- {-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1 + -- {-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1 + + {-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1 + {-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1 + {-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1 + {-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1 + + + {7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2 + {6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2 + {5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2 + {4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2 + {3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2 + + {5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2 + {4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2 + {3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2 + {2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2 + + -- {0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3 + -- {0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3 + + {0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3 + {0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3 + {0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3 + } + }, + sounds = mcl_sounds.node_sound_metal_defaults(), + _mcl_blast_resistance = 1200, + _mcl_hardness = 5, + + after_dig_node = after_dig, + allow_metadata_inventory_take = allow_take, + allow_metadata_inventory_put = allow_put, + on_metadata_inventory_put = on_put, + on_metadata_inventory_take = on_take, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("input", 1) + inv:set_size("fuel", 1) + inv:set_size("stand", 3) + -- inv:set_size("stand2", 1) + -- inv:set_size("stand3", 1) + local form = brewing_formspec + meta:set_string("formspec", form) + end, + + on_receive_fields = function(pos, formname, fields, sender) + local sender_name = sender:get_player_name() + if minetest.is_protected(pos, sender_name) then + minetest.record_protection_violation(pos, sender_name) + return + end + end, + + on_timer = brewing_stand_timer, + on_rotate = on_rotate, +}) +minetest.register_node("mcl_brewing:stand_001", { + description = S("Brewing Stand"), + _doc_items_longdesc = S("The stand allows you to brew potions!"), + _doc_items_usagehelp = doc_string, + _tt_help = S("Brew Potions"), + groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + tiles = tiles, + drop = {"mlc_brewing:stand"}, + paramtype = "light", + sunlight_propagates = true, + is_ground_content = false, + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + + {-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume + { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base + {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base + {-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base + + -- {-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1 + -- {-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1 + -- {-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1 + -- {-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1 + -- {-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1 + + {-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1 + {-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1 + {-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1 + {-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1 + + + -- {7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2 + -- {6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2 + -- {5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2 + -- {4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2 + -- {3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2 + + {5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2 + {4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2 + {3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2 + {2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2 + + {0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3 + {0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3 + + {0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3 + {0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3 + {0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3 + } + }, + sounds = mcl_sounds.node_sound_metal_defaults(), + _mcl_blast_resistance = 1200, + _mcl_hardness = 5, + + after_dig_node = after_dig, + allow_metadata_inventory_take = allow_take, + allow_metadata_inventory_put = allow_put, + on_metadata_inventory_put = on_put, + on_metadata_inventory_take = on_take, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("input", 1) + inv:set_size("fuel", 1) + inv:set_size("stand", 3) + -- inv:set_size("stand2", 1) + -- inv:set_size("stand3", 1) + local form = brewing_formspec + meta:set_string("formspec", form) + end, + + on_receive_fields = function(pos, formname, fields, sender) + local sender_name = sender:get_player_name() + if minetest.is_protected(pos, sender_name) then + minetest.record_protection_violation(pos, sender_name) + return + end + end, + + on_timer = brewing_stand_timer, + on_rotate = on_rotate, +}) +minetest.register_node("mcl_brewing:stand_110", { + description = S("Brewing Stand"), + _doc_items_longdesc = S("The stand allows you to brew potions!"), + _doc_items_usagehelp = doc_string, + _tt_help = S("Brew Potions"), + groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + tiles = tiles, + drop = {"mlc_brewing:stand"}, + paramtype = "light", + sunlight_propagates = true, + is_ground_content = false, + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + + {-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume + { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base + {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base + {-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base + + {-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1 + {-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1 + {-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1 + {-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1 + {-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1 + + {-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1 + {-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1 + {-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1 + {-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1 + + + {7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2 + {6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2 + {5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2 + {4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2 + {3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2 + + {5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2 + {4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2 + {3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2 + {2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2 + + -- {0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3 + -- {0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3 + + {0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3 + {0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3 + {0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3 + } + }, + sounds = mcl_sounds.node_sound_metal_defaults(), + _mcl_blast_resistance = 1200, + _mcl_hardness = 5, + + after_dig_node = after_dig, + allow_metadata_inventory_take = allow_take, + allow_metadata_inventory_put = allow_put, + on_metadata_inventory_put = on_put, + on_metadata_inventory_take = on_take, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("input", 1) + inv:set_size("fuel", 1) + inv:set_size("stand", 3) + -- inv:set_size("stand2", 1) + -- inv:set_size("stand3", 1) + local form = brewing_formspec + meta:set_string("formspec", form) + end, + + on_receive_fields = function(pos, formname, fields, sender) + local sender_name = sender:get_player_name() + if minetest.is_protected(pos, sender_name) then + minetest.record_protection_violation(pos, sender_name) + return + end + end, + + on_timer = brewing_stand_timer, + on_rotate = on_rotate, +}) +minetest.register_node("mcl_brewing:stand_101", { + description = S("Brewing Stand"), + _doc_items_longdesc = S("The stand allows you to brew potions!"), + _doc_items_usagehelp = doc_string, + _tt_help = S("Brew Potions"), + groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + tiles = tiles, + drop = {"mlc_brewing:stand"}, + paramtype = "light", + sunlight_propagates = true, + is_ground_content = false, + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + + {-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume + { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base + {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base + {-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base + + {-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1 + {-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1 + {-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1 + {-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1 + {-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1 + + {-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1 + {-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1 + {-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1 + {-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1 + + + -- {7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2 + -- {6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2 + -- {5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2 + -- {4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2 + -- {3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2 + + {5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2 + {4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2 + {3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2 + {2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2 + + {0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3 + {0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3 + + {0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3 + {0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3 + {0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3 + } + }, + sounds = mcl_sounds.node_sound_metal_defaults(), + _mcl_blast_resistance = 1200, + _mcl_hardness = 5, + + after_dig_node = after_dig, + allow_metadata_inventory_take = allow_take, + allow_metadata_inventory_put = allow_put, + on_metadata_inventory_put = on_put, + on_metadata_inventory_take = on_take, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("input", 1) + inv:set_size("fuel", 1) + inv:set_size("stand", 3) + -- inv:set_size("stand2", 1) + -- inv:set_size("stand3", 1) + local form = brewing_formspec + meta:set_string("formspec", form) + end, + + on_receive_fields = function(pos, formname, fields, sender) + local sender_name = sender:get_player_name() + if minetest.is_protected(pos, sender_name) then + minetest.record_protection_violation(pos, sender_name) + return + end + end, + + on_timer = brewing_stand_timer, + on_rotate = on_rotate, +}) +minetest.register_node("mcl_brewing:stand_011", { + description = S("Brewing Stand"), + _doc_items_longdesc = S("The stand allows you to brew potions!"), + _doc_items_usagehelp = doc_string, + _tt_help = S("Brew Potions"), + groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + tiles = tiles, + drop = {"mlc_brewing:stand"}, + paramtype = "light", + sunlight_propagates = true, + is_ground_content = false, + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + + {-1/16, -5/16, -1/16, 1/16, 8/16, 1/16}, -- heat plume + { 2/16, -8/16, -8/16, 8/16, -6/16, -2/16}, -- base + {-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base + {-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base + + -- {-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1 + -- {-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1 + -- {-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1 + -- {-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1 + -- {-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1 + + {-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1 + {-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1 + {-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1 + {-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1 + + + {7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2 + {6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2 + {5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2 + {4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2 + {3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2 + + {5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2 + {4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2 + {3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2 + {2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2 + + {0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3 + {0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3 + + {0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3 + {0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3 + {0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3 + } + }, + sounds = mcl_sounds.node_sound_metal_defaults(), + _mcl_blast_resistance = 1200, + _mcl_hardness = 5, + + after_dig_node = after_dig, + allow_metadata_inventory_take = allow_take, + allow_metadata_inventory_put = allow_put, + on_metadata_inventory_put = on_put, + on_metadata_inventory_take = on_take, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("input", 1) + inv:set_size("fuel", 1) + inv:set_size("stand", 3) + -- inv:set_size("stand2", 1) + -- inv:set_size("stand3", 1) + local form = brewing_formspec + meta:set_string("formspec", form) + end, + + on_receive_fields = function(pos, formname, fields, sender) + local sender_name = sender:get_player_name() + if minetest.is_protected(pos, sender_name) then + minetest.record_protection_violation(pos, sender_name) + return + end + end, + + on_timer = brewing_stand_timer, + on_rotate = on_rotate, +}) +minetest.register_node("mcl_brewing:stand_111", { + description = S("Brewing Stand"), + _doc_items_longdesc = S("The stand allows you to brew potions!"), + _doc_items_usagehelp = doc_string, + _tt_help = S("Brew Potions"), + groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + tiles = tiles, + drop = {"mlc_brewing:stand"}, paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -357,43 +1005,11 @@ local brewing_stand_def = { _mcl_blast_resistance = 1200, _mcl_hardness = 5, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - local meta = minetest.get_meta(pos) - local meta2 = meta - meta:from_table(oldmetadata) - drop_brewing_stand_items(pos, meta) - meta:from_table(meta2:to_table()) - end, - - allow_metadata_inventory_take = function(pos, listname, index, stack, player) - local name = player:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return 0 - else - return stack:get_count() - end - end, - - allow_metadata_inventory_put = function(pos, listname, index, stack, player) - local name = player:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return 0 - else - return stack:get_count() - end - end, - - on_metadata_inventory_put = function(pos, listname, index, stack, player) - local meta = minetest.get_meta(pos) - minetest.get_node_timer(pos):start(1.0) - --some code here to enforce only potions getting placed on stands - end, - - on_metadata_inventory_take = function(pos, listname, index, stack, player) - local meta = minetest.get_meta(pos) - end, + after_dig_node = after_dig, + allow_metadata_inventory_take = allow_take, + allow_metadata_inventory_put = allow_put, + on_metadata_inventory_put = on_put, + on_metadata_inventory_take = on_take, on_construct = function(pos) local meta = minetest.get_meta(pos) @@ -401,6 +1017,8 @@ local brewing_stand_def = { inv:set_size("input", 1) inv:set_size("fuel", 1) inv:set_size("stand", 3) + -- inv:set_size("stand2", 1) + -- inv:set_size("stand3", 1) local form = brewing_formspec meta:set_string("formspec", form) end, @@ -415,34 +1033,24 @@ local brewing_stand_def = { on_timer = brewing_stand_timer, on_rotate = on_rotate, -} +}) +minetest.register_craft({ + output = "mcl_brewing:stand", + recipe = { + { "", "mcl_mobitems:blaze_rod", "" }, + { "mcl_core:stone_smooth", "mcl_core:stone_smooth", "mcl_core:stone_smooth" }, + } +}) -if minetest.get_modpath("screwdriver") then - brewing_stand_def.on_rotate = screwdriver.rotate_simple -end - -brewing_stand_def.description = S("Brewing Stand") -brewing_stand_def._doc_items_longdesc = S("The stand allows you to brew potions!") -brewing_stand_def._doc_items_usagehelp = -S("To use an brewing_stand, rightclick it. An brewing_stand has 2 input slots (on the left) and one output slot.").."\n".. -S("To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.").."\n".. -S("There are two possibilities to repair tools (and armor):").."\n".. -S("• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.").."\n".. -S("• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.").."\n".. -S("Armor counts as a tool. It is possible to repair and rename a tool in a single step.").."\n\n".. -S("The brewing_stand has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the brewing_stand gets damaged. brewing_stand also have a chance of being damaged when they fall by more than 1 block. If a very damaged brewing_stand is damaged again, it is destroyed.") -brewing_stand_def._tt_help = S("Repair and rename items") - -minetest.register_node("mcl_brewing:stand", brewing_stand_def) - -if minetest.get_modpath("mcl_core") then - minetest.register_craft({ - output = "mcl_brewing:stand", - recipe = { - { "", "mcl_mobitems:blaze_rod", "" }, - { "mcl_core:stone_smooth", "mcl_core:stone_smooth", "mcl_core:stone_smooth" }, - } - }) -end - +-- Legacy +minetest.register_lbm({ + label = "Update brewing_stand formspecs (0.60.0", + name = "mcl_brewing:update_formspec_0_60_0", + --nodenames = { "group:brewing_stand" }, + run_at_every_load = false, + action = function(pos, node) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", brewing_formspec) + end, +}) diff --git a/mods/ITEMS/mcl_brewing/locale/template.txt b/mods/ITEMS/mcl_brewing/locale/template.txt old mode 100644 new mode 100755 diff --git a/mods/ITEMS/mcl_brewing/mod.conf b/mods/ITEMS/mcl_brewing/mod.conf old mode 100644 new mode 100755 index e2e88d1b72..de164abf92 --- a/mods/ITEMS/mcl_brewing/mod.conf +++ b/mods/ITEMS/mcl_brewing/mod.conf @@ -1,3 +1 @@ name = mcl_brewing -depends = mcl_init, mcl_formspec, mcl_sounds, mcl_potions, mcl_mobitems -optional_depends = mcl_core, screwdriver diff --git a/mods/ITEMS/mcl_brewing/sounds/mcl_brewing_complete.ogg b/mods/ITEMS/mcl_brewing/sounds/mcl_brewing_complete.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1798cb2730098ef00b966afa24e82a203bef2623 GIT binary patch literal 38394 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®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 iCi{nRO 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 TAj0Ys2ZcG^NGw>B?*Bpp5|M;L literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bottle_bg.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bottle_bg.png index 64032deaf428d8e97a4aaf67e35850904115120c..c0c4fd2be15e5849c00ebadbe188f162e56cb4a9 100644 GIT binary patch literal 1165 zcmds#ziO0G5XDbS2qv;oyI>H(Mp0}We1OOiX#br)c_vz(kVU}jqZK>SN!#vHaDcB6R2#d6+hT?3xWmu+V!N^rBw+gGYqAS#h z0SzTs?9mu)q|xGXwV|$A;hyf*{%A`T;gKHIcA;Q1!!tb#_ds#hE4reil^I#&id`t!jLIl-BxwSGi{k{1TcRWn zFu6?}Fku*nP$LF3H^G8~#%Lp5J)%C%HZ`l57(wEXwp3Zw103UTiZRii=NM8$jof>@ zBg$qR>GZUR;YJ=FdiVpY9gI#$^Eogj!o$;OHNM1u{(Ai4*@_Kc1vG(!!?Tybq*%$Xn=%*4RJFkxbb8IWQt3GxdD(m;^6jC~@IQuK6j45?sDmQW~QwtZr_Z#`$aSz=wwr5i7^{ z2A|~E9hP5zcC?GF`K3R^lbJl|X!6y~P0tvimYRG5MuLy8swwaenuylj!e7nOHp1*a e9y8}UW;g++3vCld-LqN%0000>WUgtt7}V7)S#_-ZJ)yKq|n~#WAFU@#%zvoDB{FN7iWl zEjK%4<9}l10bqX;`=Qw)-{;7#YYKbGAY>Z^vcuEW&t)C6Q$iB}f(JIX diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubbles_active.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubbles_active.png index b30fc8dd7a39b892f1875b651303fc8f7c7d5dcb..2a367807ac6d5024ee9a392ede39401ffc9c2c55 100644 GIT binary patch delta 177 zcmV;i08amz0m1>08Gi-<007s*{OD0Cd94voy3w50{48`Rm?_4~t;tnT{`` z%Or=@Sc+tc3CVithe#sIRozqW^#H~>JjNIV07OKWLis8PnfUA|S8$H)400000NkvXXu0mjfhVMuJ delta 136 zcmX@aIFoULWIYoD14G1u>>WUgtt7}V7)S#_-ZJ)yK+4b4#WAFU@##cHwgV0VM}DpP z`TzVjmV#85%xJv^;hem_-zppLHEf#7UOn&M{k{e}wyfar^}fva^B@0jEf?IqZCzHr lY=xEJmoFc-aUI<}hr4XXa<;Xx^FTIuy85}Sb4p-r0s!h!H5vc_ diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_burner.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_burner.png index b15bd5e3e417a91902ad35d8c8e242391e3466be..e2e8e8afeb20074143562bc5bf4e7722417e91de 100644 GIT binary patch delta 128 zcmd0u%s4@^ij9GRVe|Ex1R%v(;1OBOz`%C|gc+x5^GO2*T|HeKLnNlYy=cgIKtbTZ zf!|Wj?0geiSaKG;vA$TAkdkvO#m6B{?Ml=^3FV}dmg+C|How+hxb<6`Y`ul3mu7#2 debe8A(oE(u+IzC2t$+qHc)I$ztaD0e0swWbEMWiu delta 90 zcmbQtm^(o-go%NH!Dj1gb0Ec5666;Qq=6uB8T&*arR3@27*fHQ%+T~dL4c8s;~%3z nLs!#Jjs_(Ytrp3+84I}>o;-U~;xG8f5Twh~)z4*}Q$iB}8KN21 diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_burner_active.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_burner_active.png index b5782d0fad0191fa07b2e2d7b6b769b6f23f3d7a..93655b67322e5ed2a483a4017747af703f9682ea 100644 GIT binary patch delta 139 zcmd0w%Q!)@o{fQlVe|Ex1R%v(;1OBOz`%C|gc+x5^GO2*{XJbALnNlYy||IH!9axJ zqImVexpS2Ea`>rqFsE>q3&}i)cGcC<-TP_X9u`5t3B_znr%YL8bB(j-Hs7q}Elc0O p`*2KtAJjERAP!Dj1gb0Ec5666;Qq=6uB8T&*arQ+%07*fHQ%+T~dL4c8s>D>&UBdiaeD`A?mNHFD0%aZU1{6X3YWnFR%m$K$w?D+S)in;lg VYTi|UCT)-#JYD@<);T3K0RY}WNXGyG delta 105 zcmeyxSTjK~nTdgcVZy`=Ga$uQ666;Qq=6uB8T&*aW$5YR7*fHQED=!f=m_Vf5aHDi zS+o?^%<|!F`8r2|MdNZolSM;-??$#$b6vbO=u<5X=vX$A)7 z-JULvAr*7p-t{heWF^5C@G~sGgYzEauDFR&k3_-XwQTmZM9_#P#|M2x|sLAVP>x!-B9(r1IGOGRg(QUWu_WM^AR_?!l zTq3!qzP|tJUts9Wef)98RzB^3xhAFm(tr7^dEF9{y-Xt6XJg$huesCXnU{$q_r!Mp ze&u4f`N#b#S)mTYvUQsu^@~j0y46Z0Xl{?*)ug}M)pN2-*Dwmd>RNO7p}@K4#T*a! zpQw5!bYj};2?wq%3S?P-222Kor?d(j`dY=SxJFyb^+T7AuGIeh`@;jpLcJP4cVChAkZDLfu*PkAQVuxFfjdnw5%y$)=*Kf(P}}vM*{hg=f6W;5n%GBlT&Q zj-b!#wXVtWbN|-qH%(uad(A?I?_tqSk>^JhzRSkCzCwxTX+_V&jgf0P^KWs02%R6gz#ef3mey3u-(gFBzdG-!4tq?x|f zt2pBtx;tT#@WGdz4+LEdHXo0=?ixIQS8ZHR=0B@f&pLsMo?YInR53ek{xVmC&4LHd zc(E8)uK|i1n>4kbx?5kDe=Yv#*Vhfq$$v8|MD{y({$#$N*1QKbLh*2~7a~AmxDo delta 474 zcmV<00VV#42rFrlgRctp z^6=$QjSC@+bAK_^GXZY$#Zb=@#a3^J7UiRg*g(>m}qJLo_!a-xSkw&XJx!$H`Wkhw5_@gaVW@M2ocA;Q1Dx=7eqzM2njuSL) ziIP0P;Sa2KFghX4=fIQ*4^N}j_!9s5>&c6k*Q6Oe-`Uy)e)#Jx!Z{}AI7f$w%u78@p{QlwRUuSdY or<5xPcYhvDKiqhIaOu_e3p)S(^~dSv+)20Im~Krz-hcG=50BzPYXATM delta 95 zcmbQjSu{a1l8J$VVZy`=Ga$uQ666;Qq=6uB8T&*arS9qC7*fHQETK@q#?ukp#n^Gx sd70{!vP+UO4I8q24BnUs@Tu-%VlXzml-MiyE(fI5)78&qol`;+0D&hOqW}N^ diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_side.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_side.png index 52530bc21a82b86ff2943c41cdb0fe2d5e63a7f0..7793eae65f8c60e3f53bd777393265ccf6fafc7e 100644 GIT binary patch delta 389 zcmV;00eb%I0h9xf7=H)`0000V^Z#K0000SaNLh0L01FcU01FcV0GgZ_0003-NklOjmOhFo>2}ZBKD*46=`q7#s52Fc& zLBR3#i!ls>HT}Dko`)#`oZmi)&Fa|cLAdVT?R2u3w4`LLe3W{=%g9c~`Y$|s4*~$d zrUQu`H%9v#J5{+qPTO%_`&Z j8vqrnLbGORg4q894h5f%W16LW00000NkvXXu0mjfB8{!y delta 220 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 z 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_potions/sounds/mcl_potions_drinking.ogg b/mods/ITEMS/mcl_potions/sounds/mcl_potions_drinking.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6e3978d29258fc9da728699ff26a9a69f815f07e GIT binary patch literal 23932 zcmb@ubzIcV_cy#)7zijRT}pR%t00Y}v~+{8bgCfT-H5PsNH-|m4ND`r5=+Cfz_RxT zysq!>``pj-y6=CUc@4wNoHJ);&N=U?T~IPNR|VYy{S#`iFm0~0lh7&%204a{y`zyO z___k)Q{(k75Qx3t_Ra4)45jOq{|VPEF@RFaODmQqG3ftin7sX053A5rBt;yb8BNfdRS?&^Y8NJ3oy?se?ecAkYVD2JBcf83ssP7QK5? z+}rD1Cwp*GTyQ6$aTrI}zX>I`$ukh>4(Jp8gNW=68LJ@yb3(cZ$8Q3biu`$$m?7_e z3p{8$p*6P4t;)5w8)Bfj|5ytc(JhepTdJ@4D%Xio5LEynkOY!C_E6=eIX+~}|Muk} zXAh;HJm+RktfJs%es+Z57Jb!-K`^!lON2!$#ncv~@jB>qERZ~z0g0r5c ziz(E_8S3J#mGo7o&ReVQtIqUSJ;YZ-!hnC`nfDUnI^Im35(D(@r9i?e!}k}&-&X{_ z-}VnEz6CP5Rte>Um=_E&*)q9iR;8AyH5NrRw*3{%{S{a@EFcVk(M6_5?5lWvx-BjHDb53Sg(Ke=ERG9sd=qmP%J&kd%63L7O3>Rlt@E zeaW5Ql1Ea&Lo!$?kiR+ir>U4F1!F)R5iAY6i^ve*vm8soESPx@wAC6(*~qWQ2Xeu2 zsdUx#YJcVZ;}!+_X+ysRmVp+*v#Hkg5A=W>(j;wn@WFN6|L#8GfZYtI3A@t2PC0pR9tU^Qwar$yIb4n1%ANR(K|4nXO`L7q}#Dp;R z(N_*|_A_56#qC3a+dtZIUtw_oUd+q`cyW03Mh3W4;H@>JdPAR;iKpf>{QRNa*S5wz?vDHd+o~!+; zH|@Lx^0&xlW2#f@tyS|6VE)2p3F`b` z$hn5d3xSB$w=sAA2RYy9BUbn$UdqH!YsJvICzuDP6eMSC7JPsBzahsWBrho>FDL{S z6hR-HU>TfJSpVIouXMZN{~G^;9BD^tAOgsF<4FBq$oa`Z`U*f(1+&7@-#Lnm0t$6{ zL-5}Q0D*o+VaeUBBkxpLCRKPQRan&3ME=i+0jQJQ3gg^>V&g#|A`s|LC!lrQnCt{? z+!oC~0eT*UK8G28$D$`BNg~2=KiNoDfWA6!hyxN7t*gTn{i4GVTToq*AzuPEC3Bwz z6Ik}{fZhRclMLeMAT$b-=%IWa#&Ms>KZxTVmEVZOeVVUvocF2Xqf|NwfnqPEf1IQY zQCyVDTL=jB34{s!Jjxo0dWIpM1_FJF0ta#2e`bs;c)!32SEZ29FG_%p28=CBPXob~ zl?4c#Flv(_nFlmE__8tueo-p)5Qws@6$6A&RhGpCSLGoDAXqX~bcJx-PX?=S z!gBmov;jhb038HqfteK-qhbxonF0t-BQl$maVjd71#uJF^fc7~fhK-R+nOVH$_VR5 zR7uW+krhMDly>n==Q-D%UlU|lz>2b%RPjR+3_uHDET%)(qQ)fXAvt5(GLULzSveZW zlq5q*^^}o(K{c_g3?NEdrl5L4yQHL=Q0P9x*XvPLC1{6mK%N`ZLvA{U0G(IYTz6ij zreb;B!m6YT=)3@!pfyL$lvOxK7pd`}00iIIilJ*lJB+1<)VP?(^=9VJfl*Zh1ePv9 zB{!pD0b0nHbP~(nhypsF(he`FCRUXNCTJyJ0BofL)zySxpv83`)r5ekZbEAoVEg@v z0iyir$DBMYJgc5c9!U1?nR89E95yC@-qez**sNnqR;5JE7vWEYT=?Y+)1koiBo zwhOK-0|T%vEB^-e@(+Hw9V?)(0mXMflD9yF{&7YF0x(Lz2L4ehVFEBxe-)JwT$K`cwXlZiPv>8C49YDQ1KPBn8 zO=v(-n85CpgAW{P0^$HQbdkQ21+;7&2KY2k2a8hyrkn%@5>jBl0M0#t_DGEf0Cj;Q z09^oe-PZ(In(^P=d+Ba0| zf$D#X*0KQNtV?)caR9WZw82AnL6qG5pigAeKLp!kM&EzPqGH1MBn$$*Ww<$50_eI{ z`n5IwJ!f*{{wMc8bvL<z|MP8-_^0p}sd!;`o?XxJK49uF z!yEUHlFg30QE9t1#3lt3m@O+k<0RaYvcwj0lE>D3X;H1Unz{+J^Q2pFE zoD5jaLRh+p!Eit|z6~i?PFi~Bg89*4UhFvQJ$d%ORT}zqL1@DPm zOR3&S^90n8B+L&Irrld5}wM^L*o7w1-ZuMKP*qL9ZN;VMn61lE~< zB>g*z|No2spIw0R`>`;8{&_%R{$56qiS#k+4F;bBh-*(Wj*y@OV61JO^hH_nPfpI5 ztW7zOti-jlQ~;PvasJ7Vi;3nV+mh7jZ!U(LOzo>@qMkHY5PO>GyE;uBDN#(U)U;W;CkO#Kt zha-4@$*Kr&Z0kJ{M24Ro2jIygzphy%>Ikie1rVhE*n(%|SfHNpk05bf_LwNa{vTsO zBuYPVKLhK_Lr@T~p@jhpkpEws7=`?W`hS5LxFpa5_v1V7f0Yi56^5_mDjt5vxs^Hc zBsH2UQH3KGPa<+cIW+!5pvFf(f=@Ra8gR?O4FWU*j=+tZGJ@Bu$qHDN!{VsEq*bNK z^57>7(jXM!vYIKP9wfIzpOaN^y^7ytYj z3&bz}HtH7W;Ug@v_BZ0@B;OW zOuucc`^0)%ccfDfQ}Vtf?w9wZ;usJ3`IiIe7We&0(!QyxZC&?seXsrvXkiBQ;(K!P z>Yx2H(1RyLR16#f5;E_AWqTE7AUWL)r zY3r>1SQAo7&E-PN^E}?u-kgE^PEJn%@t5w&*pkik%xbqHS9`S6(StcOA}4WfczZH# zcHO?y(cM9II8M|ca~GXCr?gPb5RM4#VQVDl$22**$mrsll$HyiH7(UoXoY0^v>Gsu zsdJy0>5h%J4vFSe2hO?M^Br+=ca5JPcsLE%SL`VGS~g0f?Kp(R>iglg)-Izy*6=@( zE{jb&eg^WaEgo-0g>4Jq75SbND(-!$9t?0+)-eIHI_-vHv!(>s%!ZZ1af1O=B5&?x zSwz3wte|UNhCq>f>(C&XUSj9=iVJh@0sLvYc0)DNsG`5bZgrq5#t7o<8)H?;!Zzu$ zX#K2vR3$($eEo>6gxXb`D86?U;Y^(2MXGP`ZZk13Q7)U@KP93w=eUKar>Du?^aK2y zC6~ZM(fBl(*YAN0MpU*fjwWR8avwHhnx%U*V5V-%<{7Fs6#45%Y~v@>7kd#Cl`p?; zi`#Mdz7Y*+Z|{Dpu3D)ik>mQblC7gF{mSUjvwUZ4Pgc`3gFx!G`b_uctUXJv!jNm@ z*yxvnsJ#}PSWzt({4L63-(H^LN&?5(1)2I391CB|t0P#&EQ?z8!B(7AatcXpNBGsR z+!FK3*g^{@L;2F;B!~S%@YjXvUY{Hco5$JlZJw9OB_s`~7ERCekp9&fNr@AV2phr; zyPQ_Hjf$i!R6%^GLw47tx8TE-OGd$lweW8KpMxcO*iY&jzI8*IW3voC&s-!7gI|Uk z)gDJTL|OZzyjuFIB<`YKd$7)kHhf0=#icGh;>flNo-eChx>~c5f-TN6LbmGWUE`FT zmYN5gA865s!nHQvCw5kew(%BoZt^PJr4F<9e1h@o7U-YnH{$ zbFUZBC(-sSJ&%(H6UhY&+;0{9r73l^zD&)Ln@B*%@;ESzH@&+n*Swz)yMZ7r+x?*P zgPSY=`-({mY;4Y8_#$yqKkA*ulhi>DD0qa}cAF;GxMW^fyKz1BC_rKQK9;kR4tBW# z%z}aZMVD1|96!>e2+}XDv$<)u`F3t74KHRwIosRaMP;$agKQ|_s_kd&|W z*V{$4yvyZDzb52qH@EbUlP`oBOGZzGo!*j?mOW!CarT*b-#83iOLt6plzCR}ideE1 z+jY~MGwT%lyho_Cs<+oXd+cO?sJC7J{M=Po(6vhH4ATIq)H& zOwhKmMO(al6_pOE)3GE6ScE5pU9Y$+IO076-XMoE@7b(zsENN=jEK2)$Nz0s!0&!J-9I%W)s-(xwOo;Oo~f;jt>YP?Xj^hG z_o~{&;A7%D8`pV}=++*j_;NNseATGYd*7pY{7?nyT$v=C zn7GZLFWB!axE3=7-qAy3=N8C_*rx1e>}3wSIvtg4cD1vI!KoUc{ji{2JZ#H|uXEe5 ziYC$bF6Dh!WiOV*PG6pP6N~jMu2o+od$@vAG7#AYyuMo87vYxnt;u5P9=kP_ih~-O zQz);7ZH4sH-QWcq?JC#7K~(&i4JrpE*FZayVQcjPQKf(KlD9?ys_uaNA%ON+oH$wi zRkN^PQg?;&PgkD;^Htbs{jd%F>iDWwu{KxZu}5lhT@F(s?F(){xmy(_zgVy^)^uK+*H{WJnq^MGzleQlbCoAhH;_}MYpCI|d+hz(TIV2j zXP~vLnZwF=O6Pk}OkOM967W*Bq;T2%5aRkYunqsQ*b%-WYu-E?MA6r?fEpG*QP4|f z@})&ZNL=Xk{5|{kd-WU>U-~FLd^8`NEU)K668jOdSw3L!(Cz_#I;i+z0F>Q>O5De$-85=jp zEa88H&%!SmCxc4+K5VK~j`|F4kdX!}M^q^m9DDw1?i*{X+?<`8Z>{zkxg61@;L9Yg z#HX2?G>5h~?>tYLAdw}DG+=WeL#SILo@ci{QRpPijA1KB$HBxn3}26AFDrW46ij5~ z)8%F36_cX$Uv{gHT*x;-Uywg~CP}JuC-=2zsR|eOD@s;S#~(MI#~;2xC%d=k%~CS7 zwC%4N>Y{6UQL(+j<2f(;tu%_NCmlCLI~YSRXnx5@D$y<0jwLRC(xwORnG}(pE|%u* z49G;xZIs%h`9mjTlojt`E6{-k)?)7Z*>GNb^hM?v1n9{pMtaaPxE~HqraCn{u{ABi zRP)GeBDn2hNy{zH5<_8%n|N2lnl62U#7kpKJUk16vFmf=GZmZ_nrWKe1s~)i63*I# z*KPrF-^Y{vu$o?&t-WnJp_c}iW?8E5f6*RD%P%V$=9~P(4BPpMKL2g5dxKr>cHc~& z|3(y`_B`08cqN!xh*t+i?i)bGB4w%|=RZ0#Y6y{@$plEKpHtX0q9znuj(m@ z0&I)Z*v!~Xy*|#~M@#mi3Gu_}V)l6jL!mX$l`CCSI=o^ffyYk;pxZ*1g=@9TTf4ty z0{wR=P&KOYLLG~S8uNLdl!{?b=4{D52`^}8t!z!-tx#gj?|+J~965<+f4IEKB)Zg& zs_c{U#%S z{JqRUjFy&cl1#LiGot@^uKgmNMTEn*!Dt)4mBvv*!Q;FKqw^=wiK&13MiA-uNusVe z&2z>0p=-dWXW4|eU<4&1A#RIk;VA|oh=Huizl0SW_J}? z>-Mm>S+D9Q==1xuP>6IjGJ_87OLUsL#L4>GR-W32OMj)oQ*Dr<qMA6b|GQFtbByIODCFAkl!>DXFQmQC4ogyd7 zE@{b8j?7*#AsDuS&tg$$*SaS>YQ1=_ctTg``$)t&z0aG1d(SMLp)29c;OogDqvQww znI)2Ypq(|sI|@p%uRnYCZ!cyH^tCPQwvHFzmNlHIZ=|kws&!Rtvh@$*g|47UVHd~qQa1HASVILv<5*|QEdU@Le&{xx5VP2In-*TUBVnr_}30~e# z8;K(X-DcPn2^t20n%0^KS3iV9!#*BzdS0ww)Dl3K2oinwQQIqXOGe0{&LadLP;|*C zlirh}?(|i{^W8E&tSu^CbnpM7t|R^ndFzU9%m9^pal8BqDTcQ$V|@9+%PgcXaG7S- zymU8dQ^%d)r=))*t1;*&sOq;1(cM)Nv)|MTZLV5G`nid<8p4KizWXMJZDLb<8ent_ z>?k^1a$MBo{aj5aO3tU&*CeyVh&qh$NB+0S^g&jvUKhej+rr;;-ZX+9`WxY0K)xyTr_2}d&mfpPr%Axqy-q4th7W#D1!j_AeI^Rf$y7P-(l-wW8RT!O($ zqPqRm_O4dBkJ^;o6x+!uWOueHdZC}CsPH}YoYCW_1G2$lYTqD|X-%n5Dyt=8w-!B2 z#G#qsKMS**Pr|TgiG9XVMRA-V5%GBNW;HC(&YwOaC2nGYl^i=?uFObqNVH`qmFB@F zj$PBq$>mvl_foO>metZOX_Hr?5Jf5Ta2~5`WH>ErNm)*zgRS{W7gy1ArT2F)mfL>8 z4dmu6WNt)4DXK3Cf`g887^K=ZObmSLc`CciOX`O#sgVy=fTN;3{2?SSmgY5)N!dqt2DXd3p(__h&B(WVXam#_SYJ)S2|(Cdp-elnj;R9XN#Xg^+}pxT~73Nduuy+@7e zQwQNjy+yCVd?zn5GMr}+jgnKSthR;BDx`5Ip8k?ZUv2r>F1-2R)Wszo``7@wJ}!*2 zFR*!>%PA=I=Xd(E1a?aGgd?41WV$e&&ecb`wdlho$B-rI2*uhVO&6hKW~_T(`rL`$ zfP^s~#YLwJSQGY+;RG)2*5(QNO!^MxwoZ1p>~7Ai*Ie#*InPAeH`@s;C`Febb`cKM z+dncvV#$&7a;kZr=NW0*e&c>6i(*?d{LbVNNtWh=lO|z8zh(Pll4dmJS{~~|M*1mX6>3;Wh(Oij$h=SRP~lsOKw_h&>hi``nic&hp2d|oei z^>tTYx}2g!%Sy`9g)2e6COgIA7~V15FLd$G$v4oSIC}X~yVd_h{(?V9)1A*HEqful z@71EE>y+6?_vyQG4hD$&!J~AtDH{J57*;{NP4HoYopo(W3%`*dIiRrk)hwMe11hkEg-h_EeB(xTb0D53q( z;U7gB+d#yT;RQ?8z2@T})6_G!CBa%emX>#yDM68uX`Yu-kU^-x()mwi2QkJ$1X$5z#B{&~3Rbu=ER z52qJ>({x2R-WRH1wHG&fj5MtFfIIvP{M4WQNR*w-+w0E7j<{kTaQRbPP$usXxA4To zWhZVq>F<0cKM6Bm7#2PKb(p=O0rR=IV((Ht)P}d@)W+5~);cPrl19)r#f^wY`ponG zSaYZ!?nb?qLjA@zl{z2`7qj7C(p#eYa#5X{&qFIctDb7k3VDicRPe#JY&bc51Y~m1 zH2o(vv&zAeRs6#6*ta|I<0SX!sVuToKE1>icw-Poe3Y(BMa*ZvT!qohtEuKGEZJYp z^=h#j@Uj(%X}Tp^QwC+X3d1|Kf(&YUf3>_I)oi5~+P>1onl|I@x)1WYd$(X<#s8DC z^?QS}R=yMGh`E9c55`O%A@BEFS7X+xcDpNE4?I07vQ_^ydD{PZek71w<(v-3~ z%71(3z24mwrgvdqO7pCyjn|uLi3)|L(;gIRt{;5KI+##oqciP%X&`)8okCu59OOmy zL@I2IGx_DaE7gOA)-@$L1od#>5??E0jW6tvPb+%4_cRrM&oh3R3|3mR;L{?6o(hJx z!6XZB3)}I2LaQY*VaR%kuD|)r!iG`m+F^tc>Do+alPdWzk5QsxZza&wbkOWo43}iB zMyo#qIX%0Zd*3qTvh?TW?tXXw^v(hS`fQcc04+6#(Z7IlDhgbnT9R_8B@nvrVxsQbm%|s@;Eb{oi z9KU_e_pn-qHK~&OG030j4eZGu{s=g13$d3(;c=$UGPHy;=RsyhC=EBG8#88C#u0<3 zzT*f3E7%oJ*J1v`J5`>$TC#y|&L`(6d+)xzxIN0OWCm?ITn_DRA{zsdTCS$WPl=1w zCz3Y(It4|OQw<{8SrW?vOqu*x|2|LvALm_%>$f@Ji4!E=6a0k=jqY-H20J^rcse<{ zn!32SxVaj8`godyKRPKPxl*=m-npG_Y)rgTH1!g5ae}0=@#u&12J#4b=y$Oc0Y4Wf zt$e-Ms&Bp|g&aGzjrT>8>cn}V5aWkqk2Xs$x9m3IMI?~2rnBM{k33kdt7y6!?5MUQ z6{-!{b~wv0?|Ah^70(ivkEoj9 zD@`0B?xDwY@0ow7MTpuoRCg!jW)}6aR{}VH-b}ttEgaEt_FC zHS`I8=UJ-`;+37djmKWdYdJd?Q=JPI<$E1s<|-SkXCWHa?;oIA!J^b;h67Fmo;1Gc zbig&OB+4c5<6GrIk=uF<3C8mNZXw1r1EJFV9;C(N)cWVQc|^6{=6kIRDC0KL-$mh^ ztiLj1m8^SnJEZ`e)jDBiU$|^$A!PKd7l-)iVx9NOyZ1Hgf+Yg>GqmZ>C+26~AJ6j{ z*I9aUwd~HX&}UmgETW&(hCdE%9=h%o7(;YL!Nh}3U}z6U;XS`!Iw?+r-=q)s+QjEx z7^n(%W(}?uD-kcSY1$UaaRd;L@`|{e%Klol3jbvJd^5(}Wx8&}wePv6v<^U3VcS)W7l%*B$ZDjJy1Db}d2F4$Y=vbo{-16;%pdpvM-G@0J3I^%~eQisS z-gfoI1sD%}NU!+!GMS0)Rfs(Xbr7K##HHYG)AI(hG8%QxeKYH-8b=@fZhp2);aS;= zK50K`SKkagZ@E}xvA?U6ifvIgo3+x}+J8w1`AA?vmMbQ!%J7T1JO-msCNitno@V5D zGBk!|i)NwbxSFxjz1o1Ran<{x`O-ehRf_%n8>Dr15~zc$fYc_oHMne0qWx-ZFCyt7 zP9D0cc>91aGX!1vUcQKwpn2DY;;4ASe7D6J$~1f^gXC5)Ze<^^j>;EKFNGqDPjwG1c?R+LhV~NYI8JxUcX$>{MoCtQR$EnR zt|pIuL{1mO*VECKWew3*YcoGoar4k_n=+QdYkPc?9c&fNCIxK^v=DvDWB*RotZzpl zzPMUXK@-cAnuK~XoaV34^m%dtsuT(EMbf=RRy1t8(VnK3n@`hIbNp&?y9}MYE4*8y zF0(Cmy1l*e;9G?7$}x^l@*&|Vd`50XrP8v)$*GQ;O*7GuHj>3V~cX+x+kBg0aR%^ zT#ty$Q@YiAaqQTwcTj|!7<2DgS|spzrMB+Y&1%l9V=>G{E1R&osMnyMoQkn$WE6)6 zA$ebHJW8L!x@Xx|S1gP3!M6R@#Pm3}RL@6jo57G^b14O?L&MvsjHSkN4}_t^p7gLQ zTBPn0uHdPD4vXZ|cQF_8M)++nu$p^jL!B<``-`HHKZJyTdru1Z^cl^1ZpZ{|H$Fg; z%cD>U%JN(<3{XZ<$@vkw(l}F6S@8NPOdbTfYG2Xo))UbmsSgmJDn~qrhCr97k>4_q z9``3h@Zo@Vq54he*y=t>_he(^-md4>iCc_4a`#;$B1^N30tVGIZ_7hOqPJ(?Kc~Pd z2^=)GvT>aBcb66*jo;kXDYASznojh#1cOSiXos69Blr7?5Fg^n2ElLoj7#tYe3WjS=TNmAhW^+Hb+4+pjNKetVhInVfGMt~ z+Y%L!xti<=?>M6oE)EHZTK~ePd@D(<#Dy&saC(> zmr)ynDyRL^_N|4Nimf(oi_uh47~|HM>ayfnN`a8W zj|B>Ew(06WY1>Yoi>8(|kCikbhZ*3r&2DR^21znJJS5fY0!t%Xkg(uV6Zebs%;=))xOjv9)9X^(#9@O zrzX!Vv-H68#M&*N#mesjXEtaqJ`dl1$O3C-St6QTzlNzq=oS8s9yg{t;k!kHg~IAV z3(%(gKMImN=m&=tav-*gB^c3(nV)_40-Z}Oq8+tygz$dsSNhDBx$OVZl<50pRLgz zl~TJ~>oWf+BQSNBXuz47NxJ__UTxWf!i;pd^?JHR7fh(H1N?#CTZ4Jsqu)XyzvJ9} z`4oJw{r7Zz<*CJpkdF#4>m=xMq%Zpyf9wO@9m5$^GeS(w(W{ryMTUxeEBfk#eH=E9 zvyZX|VsR`EVs1cAH?O|bI}8{4_9}gSS6S}zgQqXq7&(KD^^24H@wq!>K3j}I3prjL zpL~aDrXvh>r~Tqrd*_I^7KxhXTm+lUxvjSXBXX)u6){0J3&KCi#X;5vO9;zHCrF9q zR_IsXmIfv7We<-!79ZA@&f3Z1^R;xgMAr&c_nGfkdV*ed?n+{a+1#UcSF%=CUq|_a zFq^KI*ox{L-x*3nJQs%CjFGbS=zAfp! z^|9`^f>o`H4$-bJ?1t=o`6HGtN1Ym5{i26YJ`PT;x{3B$E$Vsi=JTNSFOGhMR@ULV z&;>xQw64VSrRfWDDsg~EJ1-Ph>m*E(!lQFGMgP5LXiFz9+WuO*vBds=af7c-Ooh*8d#tlapvK!}= zF(|O{clm2ZnUlcgeR!uw@DrM#R13#4rrgz3+I7z&f>c51luEjrSi{v1eNo~}$Elvf zCh4@MqKYcHiw>vFN*PJ;*4YGrC}iG+VHy=lcIJTf^ssbs5>B2Icf67lZV`KGk^iX4CL7b;r13~%=SjT}wh zW7!qjV>aMW&Rt;v40$Vi`ly>p_8>3=oLBCAhHqMTQ!-v zFs_RlF7-ZU6MMmfJ_N4I!uFQ71^gw?mndu^#>Y~mQqdoV42S}`&qboC^^I~g4DAEO z++Nh)eWOkE^(fXl0Qd-qUu*tT_6J7Dcdi8qgFYwi-Pd}1#NZ|1<~V^NVB9qtf1mOd zF?;p$jNyUYs6%T*!>L^QSA^F>^YQ$SRtBtS*nM%aRolniVyM}Yr1m0ml`Bvrd#dPw zCH6bF(BAOrnY=6C>b%|YqF13oiB7M#GTsrNcC2`J3KNZ9*kU!ZvX;edzF5J7eOgcZ zZe3*jk+@*fq{TzwG+KxD@T(I`laSfXX^PdkS36U=(54oA>mznHC81qacYCo;eYbpd z0XZ_VQ*ra63iuPD^JuGPoePL2Nwqt+a%Ks+x`825N9{nOX-!oAV`p{@ALmV<9*f9jrUx${W!cmzc459e=r^ z!~q}NeYPH~H(WGEIF+L2MPmtmU9)F?mG~BMAqxGKu()*heM-SF#v0XKyU2GBEb$nQ z5cZ^7a23>gW-4b>DY|YZ0clfPW`zEN3IHfPFt2M18L3<Ufk_&cMFNruN6&4qKaFRpxK(MQzy#bJMbm2_XFM;r6?OKfA&<5UeYOMs5o zi@SC+kQq^bR7VckAl`0mzuurc@LoMHbg~m@Ep1{#>yTPaHD?b8hC2wap-kt`l=4b8 z;_K;;ew0#}ilz3VQ#6oGj2(0oi`}E@Jx>k0aJIAyxp!}KLTayf{Z zu+3;?8*btAeytx^myAVFe-@ENzFmiHWG%XD)XMLZ>iYY5L_M%@7`x0qP{0L7cKC%A zxXP?A8HqS()Gczz>-cajl#Ak)iPWxTT0#d`4BuUSe6GiaQ&uC|Adnd#r9@}TlIjPe zb^g_c=L*Sl-Lt80s`nqAKn^-D=C;DATM0PB@ln#Fk0U{ zy~aiD9afT&*L|nZ|YP1>=*JpJzTsV%VaX| z5>JYodLi~K~7w1#3=~ox3<049P#oCLS%Emz{4m^hVzOkZbGpaK&RU z@Nz>h(WF@y3jeK^W!6u?qkjlW4OUEvf(R;iqUoA`BRWEhny)llm%9$*zTD-J@_paA zC%p@N>>=?=e{0RoY5QWgh>TnBrQ-OoJ#~sRlgH*;G%o{UdNJtySWM|IFQ1bH94)l| zkUeXhcgeNVF1cg|vEemWEKiUh48z&p1+=nXCH`*9gzZmb6&h1a-gU6E`Y=22f=iR4 zY(q@cWN4lAbXK-lG+~GBw8F_9z3tP&BU+L-?_hr(7a5#8v5r}@vNp8!JGTPAk2l#FgHf(cj$hIU@9rjqU z#eNKDIbV)qyvutw$WTkWPo1OmENzw>XV?O^>T@ur_>$bivuaW5B@aV^k^T;=$nb(k zhE;B^0Gmsjc4af`bMmE=)I*4EggKgXgN?1+KBxb!@xiIe(IUrIoGX+;RIw39rM7dj zf#WdE7*QQLsT7^4As|mOqsVRC%zMa+Gv__k*J#@vlAHWWUtZ}g9aFthpcx*`4$;XU zs&U1|#!g3;T%G3GeB|`gsjas`>xX+&TJ$Hptu#+wEYgI|{Hd5gb0*pJx*6)dX||MfO6_?=fu}3>6}5Px zm{=-nVmsA-MMHv2Ct2lMXeXnmEx{+^U98Gu8+NjG>Umq1r>Vf}Iv1nU(MD&rrJ%WY zzL3{R9m?Q*EL&V@xS1u1#oEk;dL39~Qk!q*-eR-6?wZc(&`2cq(b6PgJgf=-95d#L z%#f1@>q>n!yi;;OsGHPW>medS@a}%Avq5?E9|X7WJ|A1!lhY#z+zvssNatU5xxt)#treucecBi)^E z!myYwaGT=Uo=vqj1uF|%qCuChHKE-|XnTl@V~gd5P5KaXb-hL0%8-@Vl}LV*VXg)@ zzd(HFh6`MwT^XgU5u16K*^*;n&0X=kAk=87+sN2+;x>F;ehAE#97k+(5rCoH8YO5= zo!3m=@ioafIGo~3m{z~Dg7dttqGW%)_Fly)K(ja>$7i>r4Y@7EP? z^*v1w*j!nq-&QEjIn!=L{noOw3i;Q=oybeVL@z}9czdZRa>YZQAw|$u5RSa`kg>#4 znCdVI*&Q!ha>_Gv4Ix?emD@A$=FiaVWSQgXsYnOgJSZvaSgvR8;vMDhlX!K%fA%PS zZDN1kDea{-S30JMN~7t3ZrG8API|(?Gnf8fD7S#>C0W&gscx~S6d7v=S)Bw}YU|QW zpS{>G=E#N#PJ=s{3w`YOX>%P6c09pJtj)I**wIqEhm5Ls=3vePa#eoJK5X+BwJ%{| z?#fW+WbGzd5*0Qp9=n7|7bWd1f0f$b&A@zcM+>EP(SRR`liokcxT-K3uT_#I z!8q>|wVdl%+e(n|G|fcIET^|mhB5u#YV(Am+5Ped1C!irbEmXMGy-E7Xuk0>R5&*z zZ-J{Om;D^lnljhgaI~Re*KuxFKTLvY?|qphEpUHtDVxAOuGdym;x~2<9zwqK^|E_w z^y9XVX^(GD^haK*p6k@P%3>2{3>V1YJ#FM14%m<7X8XTq>_ zmbqFiX?KrgXm}FQa`u8?V$DkjX^A5OKes6(m=mH?8e)dxZ6`;RMV2soEKLiOc#ml= zWyU);bNo{7v3O6N828BbfW3HYyyK%QXDY;WnCxJBd{|}cp|Nv~ezw)+C_Osbf*+2 zbw`)SyP`4q?;?;vqs24A`S-X@t#){YLn{#<8PoK(ji?Ol&KW!R8sJL^joxQn6mxUw z&BGbvCw9p2JE87J?ZL}U>FmYEI+Hl|y`mxrh4ZsN6P6y6ldaMpt@s-&@y=$^AF9sH z*8Li`Ssun3zb@uut0%T?a_x44kuvc%^P7F9><2YHYU^NQAb=;d1|c zi|4AumP)+31#4{DS%4q&@yru&NrtWwL75WWeY4d zDmSCO-*RkD8I8vtM~+A7uGPzyg;!RrY>Haa!fL2Er6OO~;i39|W!x?DGBr1;*zN@% z(N7)C2HXePhnrDR*)K`Y$|fBi`A6oRA5n*=$kjnpTN-NzJ~l^pUulm)cZ-8dF~jen zdee(svEmkFd2Y)*j|e_=-n%?|(0n3vQgFdtN)dXw;8Z+*@hXLzuq==cX1iSldGu^G zzYAsCIJ;Q#OfN8QdGUVX>ogJDMx7X|EU59K2|Vpq6uIO*AG}u*T3b|aT55xld9xAX zK_I8m%M@vRLqTj~gQoq3)H-4Tr$&lE^kn!&;uYk|j4y%-+dg7O%ke{Xq=r>W-#E9w zulvxLh!afDhhh5lGvus+eexfz=Xt_i57HzEHiovgE8f!F&SqBE_+ya8ou-bya=H|op3qO&NIt#64L)n%O|q36TC@vW!sKCC|9kY~7i z5l4agTm_nFzAHWkSV^z7b2%aR20l2cdLaO9D|0MGwHCSF6f_OXdY7T3#_N?u*sM|- zP0G}aA>pwg4$2hFeJVm;ks@4vV6h%oEp8ZE7y>B*q z32$ra$d8lrk!|A+d+9+ zb?MpTE1e+cE_~qU&%5;*+jw6qM9$cuGHRO)+k-$#~1E zQf=FRvUP)bxv)XW>ND)I^mrZ5PS#`PE|C!^EV9_l0qwJSd zytlTUO=o9zn^DkU2bDjHMu)D}tlwitf;0*3SeWq4m9_e=C_Dt$BrBXkn8(3P@n;k| z*d%pTpR|5osu;xqJMD6N^iUP zu&YvqSMrf=-6es}L#4-{c?IYBj9+V%+50=Kfj-R5X0<*SS&OJ|CRerwX^x8_tD%Vt z{ihrII(sG@XO6ni#4`Qpt5~=b>SwsRqi-W#iA8`PsY^q0OMU(%Pk4hZ=a;EpHe~D) zcA!F0BGMX01ZIVK6Z7}FZvmM9`~{Nc%^SnbBf~u)yL|8AdnyNKBO_BY3$Q2H#la2i z26l3CadLGA1OFQ3DH`2?M%P`Ey)z41d3w@_QId%x${JiJ@cx`tKX0kY`#kYbY(-jY zeIMm;VZ~+-h3e#?6j8-~gHIaUT9}*P+0q&+(R^8op7ME59^y~P^X+!Bts51p(KHR!zq znto~fMR$=>biuLERw|XcN~4x4o2Tz4^hj(f6WIpQlFtQIaj`L&5Mt!F9zhpP8{A&>E(j77lz3M3cX=*!}7|C@b^3XwD1-TVk} zT}o+lM!UBc#4yheULOW~`rCF^7P}?sZg1M79oC)4bC2eMKjqWuW7h5inM@4(x6RZ# ztgZNiwS0cvYuCy;A(3w;PWHd~o?adQicyY&+ChQ7TUfZce4w?bo`#^_*e*OuSw!@11_^PXArCOA4O&r$30cnnqC{l+B9t1_mDv4Befl?`{pTFP#QE z<9}%QbURng<*kx=#H`@+%YSHikG+gn_w_+W-TvcK0?)*&HDS|l;=YOe&(RX2JE#i~ z`sZUlmK~0Zv%x(fp^`&ubCw7P=Q%8B67ttKB>|MlynY+a8Po+L9qn)8uB$0`ze(0* z)@F;`x*O%Yv{dNtu3zurogY6fdRp-O8)wg-Bd!4w*G$#Wxk*4*iw zT%Dug;n}?}s9!YSJWloI`Lj8`F8Lhm`)n&?sdnBw)VgdeUB2CDI{Qs^FaG@SV$#MM z+=ig@$W(JU%t!G}RaMY7PcN(d(i?0D{FZgs8lygU>kHc%C{ZtYraHJR2@ZTzBLbl- z9d{Jp1|b6gBrZAjtnJv-*`Bca>+r&o!gTE$PdM2A+K+DhFK=JJz5es#w%mR^xc{hK ztWGb7kFO{5*4abQ54)wr%D;Zy^vX)(IQEgvY-$jU{7+5YN zn&W+QL;8RJy|Co!@V@+b3;_V_6+J3I6Ydhu?MsS39Pjqv!sn~^^B?`r8_T7Cn)|=M ztLD)lr)fAkk`(I+cG|vvd1u@1j_gjmsy=ht`z=zJf<`o>2&GZsKvev_^@NHmlLNELmn%3l{&_wj%5T+p*skEHh z_k|yq=V`}}n`IB~{eOkg&p$@#<=6B3Ml9X^&0mh?E0&*%pO$Kqo;yj{ZZz5n!Q^bX zxz#QBE|k0VJ?=TH1`5AFtN0QPKYS*aSs|Wk3YNJiiICOcb&5Ts$E#V+aB*EfdYfhEe3retKX2NPGrLNziAA`aae-s?6+)p8n*8XWdAu z!ldo@M{^vJAmd*d;?5r16s+ASJ=qdtdME|Mr(u18|C~M4<%-w&f`e|jqt8w|zkSpp zAO1S>w07}ji}l&;n$Yr3kl2*E(8=Y7%=Y`nTKwc|7xB?%cSU=Jc{M6tTJar%@*#OW z#Cx*K+8?YrZ+lsH%yOJdy4S|{)F0FQUz|OiIbYPV1iabw1i*Tt(g41Or~C4sst-=5 zIp&e)8U1i}N6*EVY-5q;TRq{hTcp?Z^ib%Icjkq;F;;Ap&t)?aWh)Z5Ag3y7~zL{)pAE`gT5ocIBesJyrB5KX#o#eAzUeE$vLI zyoqwOmhaL$>AP3dhwG`JdjF`i;qbYK^TKp?D7P>Fa_%qbbUYq5&YpkIJpZAz4R;&+ zb>P^6Y7dONF1iA%8R93CRCx)JPgoJuCtR`KtN`d05n%z%wi@;L++&9}vsG4mTV7Q# z72ucyywP+NNK`X6YC!tB__v)-d$yQ*+Qi(J}0U*_ss3E;W|+|>XL43QmTe8Y#Xa5JBZ{pj5J`K#N0B)4kR73cL<9LLxD z!dC7Ud+Yq$^~%r^zU|gtJ#S^l?{$Q(`|qmWzt3rN-w&GajT&eYLS@V@Cp~bK<^Una z#j7KCoFY7-|6|9yzjR~4_L;YUqIbzyg<}JO1_<2Y^wNkV03Uw;Q?FagKl=aXsr<1I zwQ$3-xz#(anh(F>y6gMpb-%^h!t8}ozzkF%&In(m__M!IoOQjFf^LlCfbTK~7 zuSVlhXmgr{_ps3{?=k4+{LSVw#qVp3&nxMY9Pm-@iupbN(#y5Eaqg;h5Gq9mw{nK{ z-qIVc#Ry%tAf;bp5p4yI^2Nn`{Y7H-IJGAqr&Eunc_Yq=FN5P&>RnMg8x7(zhHc&T3>7PL zR}}QIh6Qc4PWEt3#u_rI?a;&l?C23cR}G28SsHdz5ecK1XfA@!T99Zz=cl1~_+E@Y zK>eOB?AyYl`|kh8kJM+wou5a^>rFGv5x2kSzpI!2r!UuzRM7S5aJmj}hv$!*b&CBu z#PqcJu8eOzu6=%*#lc;7?mV6LJ)cJJ-fp(;r+4qKR~~r39qM@z67{~Yt=jKAdG{AR zWS?iIxabAnzWjxcp1oeQShyZNyYRvub#RgS>GeN{Z`ZHeZ+hwc`0KZxpWmck-#f7X z*6#cA=brN7)D%vek`&QvOGhvnkZ^yT@*UG$;qGhQ-NTq}{YLB@qw0&6R>whB|6wlq z;)V6mnzclg@G-HP1SoX?AQXdoQ8LBG3u1ciFX1 zF}P}9jNqoz$RM=mR?wXwX7WQRT_0| zw1uAU&fxxb4y_fx7so4tyfB&a;^x0p^8U`(dLlA`5T+xCdL!fN6T%RC>FB(xH#cgO zhq?UQMEa#nW>0UDJQf$@(q?MCrSZ!WffMa9eXZ3_+aO7F)N|ia$;wv6i*Dojjq-^xiOQ6kGpb#^{Qka@Ev4s@NQ|0q9N~DK9G{Z3#+@;>E zq{;lBG=9`y;_z~A?v&E`vRLvi{Oo9ds}w`jvJb+v61nNhu6%5{AYt35v*&KCcU~F7 z#%T6cjV{cFt<7^s>B2fnYWv^Mf9ni7r2lFhC^sDd{$^820=@8wjUdBKB0a?1eD8hX z#JqBbXUdG6^l*hV}M!KHvW3je&E%liiE?Iv#y=;1WXy(DVYnIz{lo#(Z?#49c zQ6nGo_7cZtavJvI5J9YK+Uw38?XDd$Pjzv8xp8KX_GlJ7>|^n6!smRx^i$_=T- zvU4=FFyhLcrk%dKx=8ap4pS#|ebIe9F?DZ!Yp|6cMixiiY7D2-?(xlpFpWkM8p^uH zpCdU)UA39kW|(tU*NZ5}XIg=O5apv(i_s~E5_Pjs#^K{PL#x|OUeiiNaW)+<4qYhs zr|FrEu~2bWnMSA57U_m{!rpkg>7KSOgN3PmB^=ZKwo8L<4_90_#x!%=D(d^WM|?Y_ z>UTM7+I<~w`0QfnmW=u`I0TOH^Lr@T&7XO2e$u?ZIfkE z)H=5OVX;*H)O^e#CDT-EeIuJA%_-2D%h&U*84m~Y`$_b7X}b~U*R)_=R5a#g4gpVR zdM(eJ)Q&lg{oR;)&Q!13$m^rU-q!LQo4885hb-p4ynQU){CeX<+Vu-^n=d1sHqU7` zZI#8vC8i~GI&$RDifGsFW`3$PqI2{3GU+_TT=QA~s{3tp^L`UyK3Y4A#ri=nrbAhD z4~IrJf}kHvbK9!WiP>$QMN5Jv0hJt7>}!<_G{wUiDW=erGTcw?x_;Z|{MpgL(GH)U z#FqL*W6YFtX?T;_QYFr~{c%pCH|M0V44Bdf5;UWXnLNs>g zdIs%p?KYy0MwfWb6OGl8U!6()=n$8H>eZN4yB{ZK$#SHPOc%@B3dc_~Rm{r5GjNHi zNf44&J&GAF4X+~#&2$ZJ_pW}WHooafw6iJ8komWz@OJzlz59`FakHsWA^S#9>`(5tST)I^ix`x|bO*Ip^X)^L_dSyyGg%!(ew)?L}BJ z7t!@@`|0Saf6Wo9lK3MVJA>q2+5YCExrh@t*X;i&E=EhOwos$&ILy+|K-Dma9X2W- z_0K-xBCF`)78~g2$Fqf8(Vy}Mcs`F2gk%ymo9MxJI{}u ziDk$3d(_`83PH(!#%v@{Mgt-Cy$!oZ`6fIjFb1mg>osa&ii>Xil+ z9>+tWVhNy#+mbU$W76HWG3sB{DQl_iRGa-zJb0RUP7&W1ANJ$m z=Xk63oL_663^moMcGSDRsm(~*vDMv6G|Qe{8|dzUos?$?W! zMLL%EPafMeS4lzg`zB|gzj|Qp9hk@WyW?D397~1UW&3Y0%Dy}o+^B;Oho6oc)6Qh{ z^oNzxL8WqgY||Q!H<@Fc+rlCG(@nZoyx}Wna)d6ZX60%v)c~@=r;T`0iK=yX4XtV8 zgX7C|-`9)$v}4{Yl$6 z8GQ>eAv1VJ^n|jLDbsv#9dU>g@7a-$DX*kKe|<)hljY?+5dMFOJMXbmSje7(=0~pX zdwI^lA;=k}rq)s466Uy9+4A!xR(RfM&bci5D@O`^@5Ir*WpiYHEZukxYUwGUjxM2; zQLm_l4dY~}v$@_-1~0(1gR-&i;ABmHVs;+-nu#yNKekKzIQxoykEaw-?(H!qCqrpS zd1b`i)!!>Y*9?{R5_OS%r|-YoEE&~4rsBba<9jv#KD_-}Z}?*0@x8S6-@kxD=d+kP z@Mk44ofy`glX(f`hhHzX@ lj@h54$;`|w48*Y-43Ddr6zpEx`vDa&c)I$ztaD0e0suGc6juNM literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_potions/textures/hb_swiftness_bgicon.png b/mods/ITEMS/mcl_potions/textures/hb_swiftness_bgicon.png new file mode 100644 index 0000000000000000000000000000000000000000..b01f148599a6e7b1d4f79afa58a8842f0b8841e7 GIT binary patch literal 1157 zcmds#v1*i25QWdO5t3j6S|&({t>x4f$}aALY(kPIT|k^7m7`3Tk63 z*a%Yz;+v$Md~=_`%EAl(zs%ly&wS_1|MqzGXlHwGThh*QF+1URtDns&?>|RZccrP0 zAD_)BC6inVDW&SlOy;tXrL20>P44oLr@Z=Xn8FpINJaJ4G^Hy;naV;*Whz&NDpeF{ zBaIf9IbGeSmz#xInpL-@ayJk2G_R&$Gu$F9(xMuQv+0&$nU)13SFPMCtkR0EP$LF3 zlwh$(W3-V*i_6u9x@LuYx>x(7Emed^dQ{tmg3S!i^eo&1#aXZLN-yk@2bkO@4*Uaw zL#Po08cL4BL1VO$Myoox-lk?{M0Jq(qb*ftWRWX&p>pR6Etp#l03lV zHgUj&VH`q@7|`4V3l18ijdb;h`ZU|rtYTsWi9gy>WmOMwjK3+yM0=iNNDVb|@9~Z( zn{lMm(;kK!d3fmI53F`DIw8&Hz?29NPovfN694(@>8sawq={ahtWLrBFW29Oy8kmS zIlJ|2asEQu{n5|l!@b>o{ybRD9-M8)lW&vh&5JL$zF%&9-aFKK{eJ%Y`E-3lUl;e^ T{kr{eqkApqtJ$ZA7jLcs;?Oys literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_potions/textures/hb_swiftness_icon.png b/mods/ITEMS/mcl_potions/textures/hb_swiftness_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5c85ae17799a58b96bcccee6585d29709b44772e GIT binary patch literal 1167 zcmds#v1*i25QWcX3pc@}u}esyo!AJ2*lI{H3$iY23eyGDDXc;?jarF~t)MV3A=t&< zLSeAA^D%74Z|)OVS$N_9m)U#oneUwW-z^vSHaE66ByG+Q_gDO`_cNRF{`uhdHEF8l z{i6d)$t0ITN~yXslesKpDXZRele;|RDX%^orf@|lQc-<1P3g)|rm|2{naWk6N)-j# zNTbDNPFMHoum(hGa!0VcPJ1OGta z5NgDLhLWRj&=_r`(W*|ax2ahfQ5_`yXiJqDS>%dcDA7_J1~fOpf`i6rBV9eBKFu~YtC$!;;*YjeS=9p^<8O*F(VpiRQbUd0d%Ppc zW*q7Cw1?qF9v*u51FId3PDt}PFeSpn(`Yrm#DD&J`ttRzG|`LI;vpFS<@(!DcfQ9n z&aR&x9zU11zV)H_y*b d&rf%6FCS@pa_jilmyfTy>-=D`|7q{!%^xOIJbeHF literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_potions/textures/mcl_potions_splash_bottle.png b/mods/ITEMS/mcl_potions/textures/mcl_potions_splash_bottle.png new file mode 100644 index 0000000000000000000000000000000000000000..17a69a8b6280bd7ce7054cb169240ae3cdf2a4b7 GIT binary patch literal 1210 zcmds#J!@1^5QZm2Fj>q8R${PG&_V@eTES>GngtCZZlPV8Op!ta6Of<~VxvV;8F5_k zCj=uFqLpGJ8BnmXu~W3LQMA!weCGZFD+>?YyUd<*-g(}4?(LcBvqP=DEfE>&OtokE z9p%|Q(9e7R)8<8yewjJfoum{|5fgEd5Xq`kMNQO2Lo{pCRLsO&EX1oRxd|2=G)5cgtP#~|wy9ak#0V09w55v7 z8elX2qG%>s^K6DxP)+VN-X_XoY|^P|H--zj@leBWu*yNx328nDrbKvnYFag4;y-`Q zFJIp$(kF|v(-*+_FW29OI`-NZI6HV{>e5w_;aBzaZ5$pRW9`lMpd26A z@pjRBlh?MFe);l~2j};HJn;4L&08ma%zeA_y>);5-I?Cf%EI&Ufk&4|*Vmt|Y#rVC t{@9U~-k~pBPj}s09lCLF;^f2MBO@=?K2N;-@bhi~b|$CWo2Tbi{{UQ+Sj+$b literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_potions/textures/mcl_potions_splash_overlay.png b/mods/ITEMS/mcl_potions/textures/mcl_potions_splash_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..9acbce6cda8345209e09fbd68eb3f0e1e47fa3fe GIT binary patch literal 1172 zcmds#v1(LN5QhJ-5HyfQEF>fZJ3$niArGKzFblGV7(}fCnn7%gXeAbj*w~w5z{*0q zU?W&qS}2U2udra_GmPKdC$O^cz`e`tIp?46|L4Bmo?TyFT3wQ~Jl&e?@Oy^m?5Pp& z{rSlqX{7BNyPK4fNiKzyQgvk}b6LnzR=w#acX`NDUVS!9;fheCqWWr@(v_i1Wuc@p zm8(LPDhjlbMvKdwuI|&z&B83rs@qbzn}>OtS5vSVZV?t~Q4Ph}bjz?z%Yu=sR&Etm zX+>A45d#`Zu-Kz9+DN0tytNqcID#9Z@s_jC-W`<{a7Vd%KtXFuY7xu^l zOl}hg{(-S=J)M;=jWfg^>lMKIk~p?@(-m`LazV- literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_potions/textures/mcl_potions_sprite.png b/mods/ITEMS/mcl_potions/textures/mcl_potions_sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..17391b1fd60aebe926edaadfdae5e5895c6b2b34 GIT binary patch literal 1181 zcmds#ziU)c5QR?&!fr5YV`Z=p1Z@Vf5;P>3h=iCQgOtLkSjpG)5a~w76VtsB2cZr+c+O+EPV$q(`+~DA>&KOwYnSP@MG&uk^wm zd4S1n;=n%;ID{H8prPa_95hB7X|$@7>uqXQMpOrhKiX1dMi#kZ7Ya6`GKw5YngHP9 zI6>o>* z!T2xN--f#IIqq_Hd~faMRGNJ3XXg3RWPv{~uCH9#8O5c8_hVfieYkb>d+)`;bob}} z+UV7ZH|G|Q@4q~Gc=~wp)Q|0FPtT9vUYjl*eVY8z*DuQ#-t9j8-VE!j8!NAuZ$J72 DvG+&^ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_tnt/init.lua b/mods/ITEMS/mcl_tnt/init.lua index 90cb76d8d3..14865febf0 100644 --- a/mods/ITEMS/mcl_tnt/init.lua +++ b/mods/ITEMS/mcl_tnt/init.lua @@ -13,8 +13,9 @@ end tnt = {} tnt.ignite = function(pos) minetest.remove_node(pos) - spawn_tnt(pos, "mcl_tnt:tnt") + local e = spawn_tnt(pos, "mcl_tnt:tnt") minetest.check_for_falling(pos) + return e end -- Add smoke particle of entity at pos. @@ -70,9 +71,8 @@ minetest.register_node("mcl_tnt:tnt", { groups = { dig_immediate = 3, tnt = 1, enderman_takable=1, flammable=-1 }, mesecons = tnt_mesecons, on_blast = function(pos) - local e = spawn_tnt(pos, "mcl_tnt:tnt") + local e = tnt.ignite(pos) e:get_luaentity().timer = tnt.BOOMTIMER - (0.5 + math.random()) - return true end, _on_ignite = function(player, pointed_thing) tnt.ignite(pointed_thing.under) diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index 083f9539ea..f59fc6dd93 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -36,9 +36,7 @@ mcl_structures.call_struct = function(pos, struct_style, rotation) if not rotation then rotation = "random" end - if struct_style == "village" then - return mcl_structures.generate_village(pos, rotation) - elseif struct_style == "desert_temple" then + if struct_style == "desert_temple" then return mcl_structures.generate_desert_temple(pos, rotation) elseif struct_style == "desert_well" then return mcl_structures.generate_desert_well(pos, rotation) @@ -61,14 +59,6 @@ mcl_structures.call_struct = function(pos, struct_style, rotation) end end -mcl_structures.generate_village = function(pos) - -- No generating for the moment, only place it :D - -- TODO: Do complete overhaul of the algorithm - local newpos = {x=pos.x,y=pos.y-1,z=pos.z} - local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_village.mts" - return minetest.place_schematic(newpos, path, "random", nil, true) -end - mcl_structures.generate_desert_well = function(pos) local newpos = {x=pos.x,y=pos.y-2,z=pos.z} local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_desert_well.mts" @@ -482,7 +472,7 @@ end -- Debug command minetest.register_chatcommand("spawnstruct", { - params = "desert_temple | desert_well | igloo | village | witch_hut | boulder | ice_spike_small | ice_spike_large | fossil | end_exit_portal | end_portal_shrine", + params = "desert_temple | desert_well | igloo | witch_hut | boulder | ice_spike_small | ice_spike_large | fossil | end_exit_portal | end_portal_shrine", description = S("Generate a pre-defined structure near your position."), privs = {debug = true}, func = function(name, param) @@ -493,10 +483,7 @@ minetest.register_chatcommand("spawnstruct", { pos = vector.round(pos) local errord = false local message = S("Structure placed.") - if param == "village" then - mcl_structures.generate_village(pos) - message = S("Village built. WARNING: Villages are experimental and might have bugs.") - elseif param == "desert_temple" then + if param == "desert_temple" then mcl_structures.generate_desert_temple(pos) elseif param == "desert_well" then mcl_structures.generate_desert_well(pos) diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.de.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.de.tr index e701b7879b..3245b934cc 100644 --- a/mods/MAPGEN/mcl_structures/locale/mcl_structures.de.tr +++ b/mods/MAPGEN/mcl_structures/locale/mcl_structures.de.tr @@ -1,7 +1,6 @@ # textdomain: mcl_structures Generate a pre-defined structure near your position.=Erzeugt ein vordefiniertes Gebäude in Ihrer Nähe. Structure placed.=Gebäude platziert. -Village built. WARNING: Villages are experimental and might have bugs.=Dorf gebaut. ACHTUNG: Dörfer sind experimentell und können fehlerhaft sein. Error: No structure type given. Please use “/spawnstruct ”.=Fehler: Kein Gebäudetyp angegeben. Bitte benutzen Sie „/spawnstruct “. Error: Unknown structure type. Please use “/spawnstruct ”.=Fehler: Unbekannter Gebäudetyp. Bitte benutzen Sie „/spawnstruct “. Use /help spawnstruct to see a list of avaiable types.=Benutzen Sie „/help spawnstruct“, um eine Liste der vorhandenen Typen zu sehen. diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.es.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.es.tr index ae909b9c49..d73d81466d 100644 --- a/mods/MAPGEN/mcl_structures/locale/mcl_structures.es.tr +++ b/mods/MAPGEN/mcl_structures/locale/mcl_structures.es.tr @@ -1,7 +1,6 @@ # textdomain: mcl_structures Generate a pre-defined structure near your position.=Genere una estructura predefinida cerca de su posición. Structure placed.=Estructura colocada. -Village built. WARNING: Villages are experimental and might have bugs.=Pueblo construido. ADVERTENCIA: los pueblos son experimentales y pueden tener errores. Error: No structure type given. Please use “/spawnstruct ”.=Error: no se especifica ningún tipo de estructura. Utilice "/spawnstruct ". Error: Unknown structure type. Please use “/spawnstruct ”.=Error: tipo de estructura desconocido. Utilice "/spawnstruct ". Use /help spawnstruct to see a list of avaiable types.=Utiliza "/help spawnstruct" para ver una lista de los tipos disponibles. diff --git a/mods/MAPGEN/mcl_structures/locale/mcl_structures.fr.tr b/mods/MAPGEN/mcl_structures/locale/mcl_structures.fr.tr index 7c1ba27231..74f5282efe 100644 --- a/mods/MAPGEN/mcl_structures/locale/mcl_structures.fr.tr +++ b/mods/MAPGEN/mcl_structures/locale/mcl_structures.fr.tr @@ -1,7 +1,6 @@ # textdomain: mcl_structures Generate a pre-defined structure near your position.=Générez une structure prédéfinie près de votre position. Structure placed.=Structure placée. -Village built. WARNING: Villages are experimental and might have bugs.=Village construit. AVERTISSEMENT: les villages sont expérimentaux et peuvent avoir des bugs. Error: No structure type given. Please use “/spawnstruct ”.=Erreur: Aucun type de structure indiqué. Veuillez utiliser "/spawnstruct ". Error: Unknown structure type. Please use “/spawnstruct ”.=Erreur: Type de structure inconnu. Veuillez utiliser "/spawnstruct ". Use /help spawnstruct to see a list of avaiable types.=Utilisez /help spawnstruct pour voir une liste des types disponibles. diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_desert_temple.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_desert_temple.mts index b60bce2dd07383e7979453f37e74abaae1b37374..79a58637b9a9959bf06f1186a4eb65bb143614cf 100644 GIT binary patch delta 1110 zcmV-c1gZPV3bYH5B>@hRCPR}k0V9!*8UY}Ysu~7gZ*_EKa*?PVk!dE8#VwI(9|n14 zY;13Lk?}u&c%1E=i^_4++(+V!n}yb82)Hrbv@K%4BBAFhN_G4Vsi z6Bl=bx=nRUV$@uw(#DMWi?vKuZ^%!&#pQ>qSoyMBuzjE<^5%ynK1SvKAJi3LEf;NW z?D1oWs%yIz^M{!BftJ`SKX5U#{2kJA(Kfz63%=OAd6jnC!pE>i8`}4x9iQ_IoPPl2 z$e$m7M&?81hYRze@&jG3QvUp4;)~?hO!?+j!sG_pq}};LxXy5F`XYJBH@+irwV{zR zUz12b0_!%=Ci~1E+%YmJZvJ4KZ~oxct5k~o5Grx&9=vtZEy+6~>#{l-)!q7S$}`Vp zkH*&g@L-hgs9Jt2ED@uB3q_ajyMLX1enQ88%`(*X(!KeV?kJIusrd0&n{DG~veb;~ z-(->uv0QhO5Od6RYuzzVYw7&(JsG96$BKJh&m5WlF<{Rtlt=&Y#HM>}?u^B)+uYix z_O;7gA5v27mZ&Al61I&z`QiS~4|jn!?nq*exo+*2{P1|@hV%3DAe3_rlB@im{l!Lq z8@G-g@!YXV=MUT-&2nG6%=IDVqLC;+9z=eK0rQ8j7V`&6O>fV|y{uj4`jC=pw?r*b zmasa(`G*k4IRC(d^AGzNXcJt&pwyufw{Bd&@Ed3o-2cF-bKU=NOapC#`zJXy?w?F) zpiSDHKYYOR7qRu?`3oRr&-`FNm#Hg%!dhRn4c0drB>d)0YU>BoGG7Vm#p4DWyFi#p#QHAiI0F<;C4fqEAP=QG};reXd7q~QINoEGn& zOlbeXMC#$&Dy93O77TyTUTVHn!XCbE0m>1j`Yl(fA`6Kv0UHlwVUgb4UdqLPgL6zE zHXg{r5`7#~iu@oaO+1i=S^GGqRKi;S^+wis(DtyZlXfJ9FMFUwJP^vi6?u9)%oZQ^ zME-cN3)y%e3-@A`^E!lZ1nnQ%ZL~KDCzHM>yM*kilwD5}>$hInD;~(SL3Rn*Q)CBj zivV)xho`rApo1h_8s)T(=`9|A))M8kj=}uFYSY2N?+dF<2dAp@4+Yue#E!uE$(a;YWA(6$7)zNv2saQ}n8CBXer`j)_)0Tk}HT%`a2Ab*$-tfegvzgkPY-nXrTsDmz^ zU}WP#`VMH&6-+z~1LEP33 cp$OHUkj4EExoOLhxc>p@tiS)^7qZja{I-uhjQ{`u delta 1036 zcmV+n1oQi}3(5+RB>@eQCPM)vk!l_WZ*pO7XJwI#8MG)D z*?)Ov4b}x_NJwq;cJnRwP?LUXvY`IWIuhdtJhaQa%?yAX=CN1X8LcLKj{^hf7{9*JJ#3sNJwp_J>F`I?Tz&ZkjSAAmybU9D`pzwkG5ATe|*sc zA+;%2@?3BH`|{Q&jSXvzsgJ+X4eA7aSn7kkeSh6w9j$5l*MdQvY}JRGqs?~oK^wX3 zNs8mH7Aup^JZ9&leoEbooVYY#i#`}ZA3E#X7<>IeA3KefV$Cdedd4vS9{ux5ma6-` z75mH}R3EgFu6?Q1w(-h%=}Yu3vEdVh@8l*{Tn&HrvsMcN=nRn*Oz5P$%faQXdAme=?;( zo#fC5p1-Iowl|)?0ExW%;H#0hZ~pCzm7m|Vv15HzI(T`0QyO?f2ar1`SXLEW9}m& zb*H4DdJvs^5tz2ql6C%IH)-cy91?M)a+QI-@#e{+4^lmhgKBNaa*HD+4q&okkoKTa z_NxbnJ|wOOxk%Q%`iz|$^ue(Qjl%q4(bcBm{KD!};}ld6tUnY0>yw{N!#CG2X6*pi zH>d3Y_dgiJ{SOmdUiC0d>?UvKF_yjPLo9oZ(7xXA`2zp|0Bk}3D5LmdW&Qv5l#%{X zJfS0(GI|H4z+=0u!pH*vK Date: Tue, 9 Jun 2020 19:05:51 -0400 Subject: [PATCH 021/108] Correct alias issue. --- mods/ITEMS/mcl_brewing/init.lua | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 5535cee8e9..696e0af12c 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -429,9 +429,7 @@ minetest.register_node("mcl_brewing:stand_000", { on_timer = brewing_stand_timer, on_rotate = on_rotate, }) - -minetest.register_alias("mcl_brewing:stand", "mcl_brewing:stand_000") - +minetest.register_alias("mcl_brewing:stand_000", "mcl_brewing:stand") minetest.register_node("mcl_brewing:stand_100", { description = S("Brewing Stand"), _doc_items_longdesc = S("The stand allows you to brew potions!"), From b674e743874d3fbe4a40666ae2b1b4c9aa92542e Mon Sep 17 00:00:00 2001 From: bzoss Date: Tue, 9 Jun 2020 20:09:32 -0400 Subject: [PATCH 022/108] Correct redstone alias and Add poison and regeneration potions - THESE DON'T CURRENTLY WORK --- mods/ITEMS/mcl_brewing/init.lua | 14 +- .../mcl_brewing/textures/mcl_brewing_side.png | Bin 404 -> 392 bytes mods/ITEMS/mcl_potions/init.lua | 192 ++++++++++++++++-- 3 files changed, 187 insertions(+), 19 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 696e0af12c..4e93d87925 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -341,6 +341,18 @@ local allow_take = function(pos, listname, index, stack, player) end local on_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local str = "" + for i=1, inv:get_size("stand") do + local stack = inv:get_stack("stand", i) + if not stack:is_empty() then + str = str.."1" + else str = str.."0" + end + end + minetest.swap_node(pos, {name = "mcl_brewing:stand_"..str}) + minetest.get_node_timer(pos):start(1.0) + --some code here to enforce only potions getting placed on stands end minetest.register_node("mcl_brewing:stand_000", { @@ -429,7 +441,7 @@ minetest.register_node("mcl_brewing:stand_000", { on_timer = brewing_stand_timer, on_rotate = on_rotate, }) -minetest.register_alias("mcl_brewing:stand_000", "mcl_brewing:stand") +minetest.register_alias("mcl_brewing:stand", "mcl_brewing:stand_000") minetest.register_node("mcl_brewing:stand_100", { description = S("Brewing Stand"), _doc_items_longdesc = S("The stand allows you to brew potions!"), diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_side.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_side.png index 7793eae65f8c60e3f53bd777393265ccf6fafc7e..057a405e0b90e9fd1a7307bae5fdb548bb8765da 100644 GIT binary patch delta 344 zcmV-e0jK_y1Be5VIe$7yL_t(IjfIlGP69y?#(zhSz=c0H7wCM6djLtSAi35MAK-dT z)W$?RBPRCn0OlGiB2*f9fUBV(7IYXwBZk;GR=c^q3brJQ1Uc|`0D4`0d#Bw_Yxa$#umtD{ zvNX0jc)bhL@461*{fRtH0bn#9r+RfnQ8ve+J?M48^9~!tKgXCTwn)h-6}B}vs%fJR z@OTN9Kd@k+n^D~ES<1|MxWAR-rpt1*Hf~t0zi7G*jjK+H?e5p$>*WgeZu`T=DQSVq qO}9bSDKVda0#K|Jsh2C-K-K@~s;s=D6?bC*0000Lc{kjKW z)Hu?4*L96_jVMkM_&&;aQAK%xQkq0`2*Epa{_S2almmEYy?>P#6=H;f$?!xZ`!|D3 zK^mh8Mz6mr`Nj(R(V8R=qX~vV!148qF${t={kxQ&hbaM^-#&@W>e%T)xbEKVbh4PV zq-3molzP6)$WF%kFFbk=0sz3K1Bo5vVaoArJDF Date: Fri, 12 Jun 2020 19:11:06 -0400 Subject: [PATCH 023/108] Add invisibility potion - includes splash and plus --- mods/ITEMS/mcl_brewing/init.lua | 2 +- mods/ITEMS/mcl_potions/init.lua | 63 ++++++++++++++++++++++++- mods/ITEMS/mcl_potions/invisibility.lua | 28 +++++++++++ 3 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 mods/ITEMS/mcl_potions/invisibility.lua diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 4e93d87925..73ddb9840d 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -134,7 +134,7 @@ local function brewing_stand_timer(pos, elapsed) -- return 1 -- end -- end - brew_output = brewable(inv) + local brew_output = brewable(inv) if fuel ~= 0 and brew_output then fuel_timer = fuel_timer + elapsed diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index c5273bcd27..54c7bcf55e 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -1,4 +1,8 @@ local S = minetest.get_translator("mcl_potions") +mcl_potions = {} + +local modpath = minetest.get_modpath("mcl_potions") +dofile(modpath .. "/invisibility.lua") local brewhelp = S("Put this item in an item frame for decoration. It's useless otherwise.") @@ -770,6 +774,53 @@ minetest.register_craftitem("mcl_potions:regeneration_plus", { end }) +local invisiblility_func = function(player, duration) + invisible(player, true) + minetest.after(duration, function() mcl_potions.invisible(player, false) end ) +end + +minetest.register_craftitem("mcl_potions:invisibility", { + description = S("Invisibility Potion"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#B0B0B0"), + inventory_image = potion_image("#B0B0B0"), + groups = { brewitem = 1, food = 0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + invisiblility_func(user, 180) + _use_potion() + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + invisiblility_func(user, 180) + _use_potion() + return itemstack + end +}) + +minetest.register_craftitem("mcl_potions:invisibility_plus", { + description = S("Invisibility Potion +"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#A0A0A0"), + inventory_image = potion_image("#A0A0A0"), + groups = { brewitem = 1, food = 0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + invisiblility_func(user, 480) + _use_potion() + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + invisiblility_func(user, 480) + _use_potion() + return itemstack + end +}) + -- Look into reducing attack on punch minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing) if puncher:get_attribute("weakness") then @@ -908,6 +959,15 @@ register_splash("regeneration_2", "Splash Regeneration II", "#B52CC2", { register_splash("regeneration_plus", "Splash Regeneration +", "#C53DD3", { potion_fun = function(player) regeneration_func(player, 0.85, 180) end }) + +register_splash("invisibility", "Splash Invisibility", "#B0B0B0", { + potion_fun = function(player) invisiblility_func(player, 135) end +}) + +register_splash("invisibility", "Splash Invisibility", "#A0A0A0", { + potion_fun = function(player) invisiblility_func(player, 300) end +}) + -- duration effects of redstone are a factor of 8/3 -- duration effects of glowstone are a time factor of 1/2 and effect of 14/12 -- splash potion effects are reduced by a factor of 3/4 @@ -958,7 +1018,8 @@ local inversion_table = { ["mcl_potions:swiftness_plus"] = "mlc_potions:slowness_plus", ["mcl_potions:leaping"] = "mcl_potions:slowness", ["mcl_potions:leaping_2"] = "mcl_potions:slowness_plus", - ["mcl_potions:leaping_plus"] = "mlc_potions:slowness_plus", + ["mcl_potions:leaping_plus"] = "mcl_potions:slowness_plus", + ["mcl_potions:night_vision"] = "mcl_potions:invisibility", } diff --git a/mods/ITEMS/mcl_potions/invisibility.lua b/mods/ITEMS/mcl_potions/invisibility.lua new file mode 100644 index 0000000000..f7311c2172 --- /dev/null +++ b/mods/ITEMS/mcl_potions/invisibility.lua @@ -0,0 +1,28 @@ +-- invisibility function +invisibility = {} + +-- reset player invisibility if they go offline +minetest.register_on_leaveplayer(function(player) + + local name = player:get_player_name() + if invisibility[name] then + invisibility[name] = nil + end + +end) + +invisible = function(player, toggle) + + if not player then return false end + + invisibility[player:get_player_name()] = toggle + + if toggle then -- hide player + player:set_properties({visual_size = {x = 0, y = 0}}) + player:set_nametag_attributes({color = {a = 0}}) + else -- show player + player:set_properties({visual_size = {x = 1, y = 1}}) + player:set_nametag_attributes({color = {a = 255}}) + end + +end From 7b4ded46f93101f2ef268c755220f06aeb2a2567 Mon Sep 17 00:00:00 2001 From: bzoss Date: Fri, 12 Jun 2020 19:54:45 -0400 Subject: [PATCH 024/108] Rearrange the code structure. --- mods/ITEMS/mcl_potions/functions.lua | 67 +++++ mods/ITEMS/mcl_potions/init.lua | 353 ++++++------------------ mods/ITEMS/mcl_potions/invisibility.lua | 28 -- mods/ITEMS/mcl_potions/splash.lua | 145 ++++++++++ 4 files changed, 302 insertions(+), 291 deletions(-) create mode 100644 mods/ITEMS/mcl_potions/functions.lua delete mode 100644 mods/ITEMS/mcl_potions/invisibility.lua create mode 100644 mods/ITEMS/mcl_potions/splash.lua diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua new file mode 100644 index 0000000000..c3b3b4b79a --- /dev/null +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -0,0 +1,67 @@ +local invisibility = {} + +-- reset player invisibility if they go offline +minetest.register_on_leaveplayer(function(player) + + local name = player:get_player_name() + if invisibility[name] then + invisibility[name] = nil + end + +end) + +function mcl_potions.invisible(player, toggle) + + if not player then return false end + + invisibility[player:get_player_name()] = toggle + + if toggle then -- hide player + player:set_properties({visual_size = {x = 0, y = 0}}) + player:set_nametag_attributes({color = {a = 0}}) + else -- show player + player:set_properties({visual_size = {x = 1, y = 1}}) + player:set_nametag_attributes({color = {a = 255}}) + end + +end + +function mcl_potions._use_potion() + minetest.item_eat(0, "mcl_potions:glass_bottle") + minetest.sound_play("mcl_potions_drinking") +end + +function mcl_potions.healing_func(player, hp) player:set_hp(player:get_hp() + hp) end + +function mcl_potions.swiftness_func(player, factor, duration) + playerphysics.add_physics_factor(player, "speed", "swiftness", factor) + minetest.after(duration, function() playerphysics.remove_physics_factor(player, "speed", "swiftness") end ) +end + +function mcl_potions.leaping_func(player, factor, duration) + playerphysics.add_physics_factor(player, "jump", "leaping", factor) + minetest.after(duration, function() playerphysics.remove_physics_factor(player, "jump", "leaping") end ) +end + +function mcl_potions.weakness_func(player, factor, duration) + player:set_attribute("weakness", tostring(factor)) + print(player:get_player_name().." ".."weakness = "..player:get_attribute("weakness")) + minetest.after(duration, function() player:set_attribute("weakness", tostring(0)) end ) +end + +function mcl_potions.poison_func(player, factor, duration) + player:set_attribute("poison", tostring(factor)) + print(player:get_player_name().." ".."poison = "..player:get_attribute("poison")) + minetest.after(duration, function() player:set_attribute("poison", tostring(0)) end ) +end + +function mcl_potions.regeneration_func(player, factor, duration) + player:set_attribute("regeneration", tostring(factor)) + print(player:get_player_name().." ".."regeneration = "..player:get_attribute("regeneration")) + minetest.after(duration, function() player:set_attribute("regeneration", tostring(0)) end ) +end + +function mcl_potions.invisiblility_func(player, duration) + invisible(player, true) + minetest.after(duration, function() invisible(player, false) end ) +end diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 54c7bcf55e..bfb6fffbfc 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -2,7 +2,8 @@ local S = minetest.get_translator("mcl_potions") mcl_potions = {} local modpath = minetest.get_modpath("mcl_potions") -dofile(modpath .. "/invisibility.lua") +dofile(modpath .. "/functions.lua") +dofile(modpath .. "/splash.lua") local brewhelp = S("Put this item in an item frame for decoration. It's useless otherwise.") @@ -137,12 +138,7 @@ local potion_image = function(colorstring, opacity) return "mcl_potions_potion_overlay.png^[colorize:"..colorstring..":"..tostring(opacity).."^mcl_potions_potion_bottle_drinkable.png" end -local splash_image = function(colorstring, opacity) - if not opacity then - opacity = 127 - end - return "mcl_potions_splash_overlay.png^[colorize:"..colorstring..":"..tostring(opacity).."^mcl_potions_splash_bottle.png" -end + -- Cauldron fill up rules: -- Adding any water increases the water level by 1, preserving the current water type @@ -332,12 +328,6 @@ minetest.register_craftitem("mcl_potions:dragon_breath", { stack_max = 1, }) -local function _use_potion() - minetest.item_eat(0, "mcl_potions:glass_bottle") - minetest.sound_play("mcl_potions_drinking") -end - -local healing_func = function(player, hp) player:set_hp(player:get_hp() + hp) end minetest.register_craftitem("mcl_potions:healing", { description = S("Healing Potion"), @@ -348,14 +338,14 @@ minetest.register_craftitem("mcl_potions:healing", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - healing_func(user, 4) - _use_potion() + mcl_potions.healing_func(user, 4) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - healing_func(user, 4) - _use_potion() + mcl_potions.healing_func(user, 4) + mcl_potions._use_potion() return itemstack end, }) @@ -369,14 +359,14 @@ minetest.register_craftitem("mcl_potions:healing_2", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - healing_func(user, 8) - _use_potion() + mcl_potions.healing_func(user, 8) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - healing_func(user, 8) - _use_potion() + mcl_potions.healing_func(user, 8) + mcl_potions._use_potion() return itemstack end, @@ -391,14 +381,14 @@ minetest.register_craftitem("mcl_potions:harming", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - healing_func(user, -6) - _use_potion() + mcl_potions.healing_func(user, -6) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - healing_func(user, -6) - _use_potion() + mcl_potions.healing_func(user, -6) + mcl_potions._use_potion() return itemstack end, }) @@ -412,14 +402,14 @@ minetest.register_craftitem("mcl_potions:harming_2", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - healing_func(user, -12) - _use_potion() + mcl_potions.healing_func(user, -12) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - healing_func(user, -12) - _use_potion() + mcl_potions.healing_func(user, -12) + mcl_potions._use_potion() return itemstack end, }) @@ -434,10 +424,6 @@ minetest.register_craftitem("mcl_potions:night_vision", { stack_max = 1, }) -local swiftness_func = function(player, factor, duration) - playerphysics.add_physics_factor(player, "speed", "swiftness", factor) - minetest.after(duration, function() playerphysics.remove_physics_factor(player, "speed", "swiftness") end ) -end minetest.register_craftitem("mcl_potions:swiftness", { description = S("Swiftness Potion"), @@ -448,14 +434,14 @@ minetest.register_craftitem("mcl_potions:swiftness", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - swiftness_func(user, 1.2, 180) - _use_potion() + mcl_potions.swiftness_func(user, 1.2, 180) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - swiftness_func(user, 1.2, 180) - _use_potion() + mcl_potions.swiftness_func(user, 1.2, 180) + mcl_potions._use_potion() return itemstack end, }) @@ -469,14 +455,14 @@ minetest.register_craftitem("mcl_potions:swiftness_2", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - swiftness_func(user, 1.4, 90) - _use_potion() + mcl_potions.swiftness_func(user, 1.4, 90) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - swiftness_func(user, 1.4, 90) - _use_potion() + mcl_potions.swiftness_func(user, 1.4, 90) + mcl_potions._use_potion() return itemstack end, }) @@ -490,14 +476,14 @@ minetest.register_craftitem("mcl_potions:swiftness_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - swiftness_func(user, 1.2, 480) - _use_potion() + mcl_potions.swiftness_func(user, 1.2, 480) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - swiftness_func(user, 1.2, 480) - _use_potion() + mcl_potions.swiftness_func(user, 1.2, 480) + mcl_potions._use_potion() return itemstack end, }) @@ -511,14 +497,14 @@ minetest.register_craftitem("mcl_potions:slowness", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - swiftness_func(user, 0.85, 90) - _use_potion() + mcl_potions.swiftness_func(user, 0.85, 90) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - swiftness_func(user, 0.85, 90) - _use_potion() + mcl_potions.swiftness_func(user, 0.85, 90) + mcl_potions._use_potion() return itemstack end, }) @@ -532,21 +518,17 @@ minetest.register_craftitem("mcl_potions:slowness_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - swiftness_func(user, 0.85, 240) - _use_potion() + mcl_potions.swiftness_func(user, 0.85, 240) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - swiftness_func(user, 0.85, 240) - _use_potion() + mcl_potions.swiftness_func(user, 0.85, 240) + mcl_potions._use_potion() return itemstack end, }) -local leaping_func = function(player, factor, duration) - playerphysics.add_physics_factor(player, "jump", "leaping", factor) - minetest.after(duration, function() playerphysics.remove_physics_factor(player, "jump", "leaping") end ) -end minetest.register_craftitem("mcl_potions:leaping", { @@ -558,14 +540,14 @@ minetest.register_craftitem("mcl_potions:leaping", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - leaping_func(user, 1.2, 180) - _use_potion() + mcl_potions.leaping_func(user, 1.2, 180) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - leaping_func(user, 1.2, 180) - _use_potion() + mcl_potions.leaping_func(user, 1.2, 180) + mcl_potions._use_potion() return itemstack end, }) @@ -579,14 +561,14 @@ minetest.register_craftitem("mcl_potions:leaping_2", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - leaping_func(user, 1.4, 90) - _use_potion() + mcl_potions.leaping_func(user, 1.4, 90) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - leaping_func(user, 1.4, 90) - _use_potion() + mcl_potions.leaping_func(user, 1.4, 90) + mcl_potions._use_potion() return itemstack end, }) @@ -600,23 +582,19 @@ minetest.register_craftitem("mcl_potions:leaping_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - leaping_func(user, 1.2, 480) - _use_potion() + mcl_potions.leaping_func(user, 1.2, 480) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - leaping_func(user, 1.2, 480) - _use_potion() + mcl_potions.leaping_func(user, 1.2, 480) + mcl_potions._use_potion() return itemstack end, }) -local weakness_func = function(player, factor, duration) - player:set_attribute("weakness", tostring(factor)) - print(player:get_player_name().." ".."weakness = "..player:get_attribute("weakness")) - minetest.after(duration, function() player:set_attribute("weakness", tostring(0)) end ) -end + minetest.register_craftitem("mcl_potions:weakness", { description = S("Weakness Potion"), _doc_items_longdesc = brewhelp, @@ -626,23 +604,19 @@ minetest.register_craftitem("mcl_potions:weakness", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - weakness_func(user, 1.2, 180) - _use_potion() + mcl_potions.weakness_func(user, 1.2, 180) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - weakness_func(user, 1.2, 180) - _use_potion() + mcl_potions.weakness_func(user, 1.2, 180) + mcl_potions._use_potion() return itemstack end }) -local poison_func = function(player, factor, duration) - player:set_attribute("poison", tostring(factor)) - print(player:get_player_name().." ".."poison = "..player:get_attribute("poison")) - minetest.after(duration, function() player:set_attribute("poison", tostring(0)) end ) -end + minetest.register_craftitem("mcl_potions:poison", { description = S("Poison Potion"), _doc_items_longdesc = brewhelp, @@ -652,14 +626,14 @@ minetest.register_craftitem("mcl_potions:poison", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - poison_func(user, 2.5, 45) - _use_potion() + mcl_potions.poison_func(user, 2.5, 45) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - poison_func(user, 2.5, 45) - _use_potion() + mcl_potions.poison_func(user, 2.5, 45) + mcl_potions._use_potion() return itemstack end }) @@ -673,14 +647,14 @@ minetest.register_craftitem("mcl_potions:poison_2", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - poison_func(user, 1.2, 21) - _use_potion() + mcl_potions.poison_func(user, 1.2, 21) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - poison_func(user, 1.2, 21) - _use_potion() + mcl_potions.poison_func(user, 1.2, 21) + mcl_potions._use_potion() return itemstack end }) @@ -694,23 +668,19 @@ minetest.register_craftitem("mcl_potions:poison_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - poison_func(user, 2.5, 90) - _use_potion() + mcl_potions.poison_func(user, 2.5, 90) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - poison_func(user, 2.5, 90) - _use_potion() + mcl_potions.poison_func(user, 2.5, 90) + mcl_potions._use_potion() return itemstack end }) -local regeneration_func = function(player, factor, duration) - player:set_attribute("regeneration", tostring(factor)) - print(player:get_player_name().." ".."regeneration = "..player:get_attribute("regeneration")) - minetest.after(duration, function() player:set_attribute("regeneration", tostring(0)) end ) -end + minetest.register_craftitem("mcl_potions:regeneration", { description = S("Regeneration Potion"), _doc_items_longdesc = brewhelp, @@ -720,14 +690,14 @@ minetest.register_craftitem("mcl_potions:regeneration", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - regeneration_func(user, 2.5, 45) - _use_potion() + mcl_potions.regeneration_func(user, 2.5, 45) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - regeneration_func(user, 2.5, 45) - _use_potion() + mcl_potions.regeneration_func(user, 2.5, 45) + mcl_potions._use_potion() return itemstack end }) @@ -741,14 +711,14 @@ minetest.register_craftitem("mcl_potions:regeneration_2", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - regeneration_func(user, 1.2, 21) - _use_potion() + mcl_potions.regeneration_func(user, 1.2, 21) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - regeneration_func(user, 1.2, 21) - _use_potion() + mcl_potions.regeneration_func(user, 1.2, 21) + mcl_potions._use_potion() return itemstack end }) @@ -762,22 +732,18 @@ minetest.register_craftitem("mcl_potions:regeneration_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - regeneration_func(user, 2.5, 90) - _use_potion() + mcl_potions.regeneration_func(user, 2.5, 90) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - regeneration_func(user, 2.5, 90) - _use_potion() + mcl_potions.regeneration_func(user, 2.5, 90) + mcl_potions._use_potion() return itemstack end }) -local invisiblility_func = function(player, duration) - invisible(player, true) - minetest.after(duration, function() mcl_potions.invisible(player, false) end ) -end minetest.register_craftitem("mcl_potions:invisibility", { description = S("Invisibility Potion"), @@ -788,14 +754,14 @@ minetest.register_craftitem("mcl_potions:invisibility", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - invisiblility_func(user, 180) - _use_potion() + mcl_potions.invisiblility_func(user, 180) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - invisiblility_func(user, 180) - _use_potion() + mcl_potions.invisiblility_func(user, 180) + mcl_potions._use_potion() return itemstack end }) @@ -809,14 +775,14 @@ minetest.register_craftitem("mcl_potions:invisibility_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - invisiblility_func(user, 480) - _use_potion() + mcl_potions.invisiblility_func(user, 480) + mcl_potions._use_potion() return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - invisiblility_func(user, 480) - _use_potion() + mcl_potions.invisiblility_func(user, 480) + mcl_potions._use_potion() return itemstack end }) @@ -829,144 +795,6 @@ minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing) end) -function register_splash(name, descr, color, def) - - local id = "mcl_potions:"..name.."_splash" - minetest.register_craftitem(id, { - description = descr, - inventory_image = splash_image(color), - on_use = function(itemstack, placer, pointed_thing) - --weapons_shot(itemstack, placer, pointed_thing, def.velocity, name) - local velocity = 10 - local dir = placer:get_look_dir(); - local pos = placer:getpos(); - local obj = minetest.env:add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying") - obj:setvelocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity}) - obj:setacceleration({x=0, y=-9.8, z=0}) - itemstack:take_item() - return itemstack - end, - }) - - local w = 0.35 - - minetest.register_entity(id.."_flying",{ - textures = {splash_image(color)}, - hp_max = 1, - visual_size = {x=w,y=w}, - collisionbox = {-w,-w,-w, w,w,w}, - on_step = function(self, dtime) - local pos = self.object:getpos() - local node = minetest.get_node(pos) - local n = node.name - local d = 2 - if n ~= "air" then - minetest.sound_play("mcl_potions_breaking_glass") - minetest.add_particlespawner({ - amount = 40, - time = 2, - minpos = {x=pos.x-d, y=pos.y, z=pos.z-d}, - maxpos = {x=pos.x+d, y=pos.y+1, z=pos.z+d}, - minvel = {x=-1, y=0, z=-1}, - maxvel = {x=1, y=0.5, z=1}, - minacc = {x=-0.5, y=0, z=-0.5}, - maxacc = {x=0.5, y=.2, z=0.5}, - minexptime = 1, - maxexptime = 5, - minsize = 2, - maxsize = 4, - collisiondetection = true, - vertical = false, - texture = "mcl_potions_sprite.png^[colorize:"..color..":127", - }) - self.object:remove() - for i, obj in ipairs(minetest.get_objects_inside_radius(pos, 3)) do - if minetest.is_player(obj) then def.potion_fun(obj) end - end - end - end, - }) -end - -register_splash("healing", "Splash Healing", "#AA0000", { - potion_fun = function(player) player:set_hp(player:get_hp() + 3) end, -}) - -register_splash("healing_2", "Splash Healing II", "#DD0000", { - potion_fun = function(player) player:set_hp(player:get_hp() + 6) end, -}) - -register_splash("harming", "Splash Harming", "#660099", { - potion_fun = function(player) healing_func(player, -4) end, -}) - -register_splash("harming_2", "Splash Harming II", "#330066", { - potion_fun = function(player) healing_func(player, -6) end, -}) - -register_splash("leaping", "Splash Leaping", "#00CC33", { - potion_fun = function(player) leaping_func(player, 1.2, 135) end -}) - -register_splash("leaping_2", "Splash Leaping II", "#00EE33", { - potion_fun = function(player) leaping_func(player, 1.4, 135) end -}) - -register_splash("leaping_plus", "Splash Leaping +", "#00DD33", { - potion_fun = function(player) leaping_func(player, 1.2, 360) end -}) - -register_splash("swiftness", "Splash Swiftness", "#009999", { - potion_fun = function(player) swiftness_func(player, 1.2, 135) end -}) - -register_splash("swiftness_2", "Splash Swiftness II", "#00BBBB", { - potion_fun = function(player) swiftness_func(player, 1.4, 135) end -}) - -register_splash("swiftness_plus", "Splash Swiftness +", "#00BBBB", { - potion_fun = function(player) swiftness_func(player, 1.2, 360) end -}) - -register_splash("slowness", "Splash Slowness ", "#000080", { - potion_fun = function(player) swiftness_func(player, 0.85, 68) end -}) - -register_splash("slowness_plus", "Splash Slowness +", "#000066", { - potion_fun = function(player) swiftness_func(player, 0.85, 180) end -}) - -register_splash("poison", "Splash Poison", "#335544", { - potion_fun = function(player) poison_func(player, 0.85, 180) end -}) - -register_splash("poison_2", "Splash Poison II", "#446655", { - potion_fun = function(player) poison_func(player, 0.85, 180) end -}) - -register_splash("poison_plus", "Splash Poison II", "#557766", { - potion_fun = function(player) poison_func(player, 0.85, 180) end -}) - -register_splash("regeneration", "Splash Regeneration", "#A52BB2", { - potion_fun = function(player) regeneration_func(player, 0.85, 180) end -}) - -register_splash("regeneration_2", "Splash Regeneration II", "#B52CC2", { - potion_fun = function(player) regeneration_func(player, 0.85, 180) end -}) - -register_splash("regeneration_plus", "Splash Regeneration +", "#C53DD3", { - potion_fun = function(player) regeneration_func(player, 0.85, 180) end -}) - -register_splash("invisibility", "Splash Invisibility", "#B0B0B0", { - potion_fun = function(player) invisiblility_func(player, 135) end -}) - -register_splash("invisibility", "Splash Invisibility", "#A0A0A0", { - potion_fun = function(player) invisiblility_func(player, 300) end -}) -- duration effects of redstone are a factor of 8/3 -- duration effects of glowstone are a time factor of 1/2 and effect of 14/12 @@ -1036,7 +864,6 @@ local mod_table = { ["mcl_mobitems:gunpowder"] = splash_table, } -mcl_potions = {} -- Compare two ingredients for compatable alchemy function mcl_potions.get_alchemy(ingr, pot) diff --git a/mods/ITEMS/mcl_potions/invisibility.lua b/mods/ITEMS/mcl_potions/invisibility.lua deleted file mode 100644 index f7311c2172..0000000000 --- a/mods/ITEMS/mcl_potions/invisibility.lua +++ /dev/null @@ -1,28 +0,0 @@ --- invisibility function -invisibility = {} - --- reset player invisibility if they go offline -minetest.register_on_leaveplayer(function(player) - - local name = player:get_player_name() - if invisibility[name] then - invisibility[name] = nil - end - -end) - -invisible = function(player, toggle) - - if not player then return false end - - invisibility[player:get_player_name()] = toggle - - if toggle then -- hide player - player:set_properties({visual_size = {x = 0, y = 0}}) - player:set_nametag_attributes({color = {a = 0}}) - else -- show player - player:set_properties({visual_size = {x = 1, y = 1}}) - player:set_nametag_attributes({color = {a = 255}}) - end - -end diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua new file mode 100644 index 0000000000..8c35b7ef08 --- /dev/null +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -0,0 +1,145 @@ +local splash_image = function(colorstring, opacity) + if not opacity then + opacity = 127 + end + return "mcl_potions_splash_overlay.png^[colorize:"..colorstring..":"..tostring(opacity).."^mcl_potions_splash_bottle.png" +end + +local function register_splash(name, descr, color, def) + + local id = "mcl_potions:"..name.."_splash" + minetest.register_craftitem(id, { + description = descr, + inventory_image = splash_image(color), + on_use = function(itemstack, placer, pointed_thing) + --weapons_shot(itemstack, placer, pointed_thing, def.velocity, name) + local velocity = 10 + local dir = placer:get_look_dir(); + local pos = placer:getpos(); + local obj = minetest.env:add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying") + obj:setvelocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity}) + obj:setacceleration({x=0, y=-9.8, z=0}) + itemstack:take_item() + return itemstack + end, + }) + + local w = 0.35 + + minetest.register_entity(id.."_flying",{ + textures = {splash_image(color)}, + hp_max = 1, + visual_size = {x=w,y=w}, + collisionbox = {-w,-w,-w, w,w,w}, + on_step = function(self, dtime) + local pos = self.object:getpos() + local node = minetest.get_node(pos) + local n = node.name + local d = 2 + if n ~= "air" then + minetest.sound_play("mcl_potions_breaking_glass") + minetest.add_particlespawner({ + amount = 40, + time = 2, + minpos = {x=pos.x-d, y=pos.y, z=pos.z-d}, + maxpos = {x=pos.x+d, y=pos.y+1, z=pos.z+d}, + minvel = {x=-1, y=0, z=-1}, + maxvel = {x=1, y=0.5, z=1}, + minacc = {x=-0.5, y=0, z=-0.5}, + maxacc = {x=0.5, y=.2, z=0.5}, + minexptime = 1, + maxexptime = 5, + minsize = 2, + maxsize = 4, + collisiondetection = true, + vertical = false, + texture = "mcl_potions_sprite.png^[colorize:"..color..":127", + }) + self.object:remove() + for i, obj in ipairs(minetest.get_objects_inside_radius(pos, 3)) do + if minetest.is_player(obj) then def.potion_fun(obj) end + end + end + end, + }) +end + +register_splash("healing", "Splash Healing", "#AA0000", { + potion_fun = function(player) player:set_hp(player:get_hp() + 3) end, +}) + +register_splash("healing_2", "Splash Healing II", "#DD0000", { + potion_fun = function(player) player:set_hp(player:get_hp() + 6) end, +}) + +register_splash("harming", "Splash Harming", "#660099", { + potion_fun = function(player) mcl_potions.healing_func(player, -4) end, +}) + +register_splash("harming_2", "Splash Harming II", "#330066", { + potion_fun = function(player) mcl_potions.healing_func(player, -6) end, +}) + +register_splash("leaping", "Splash Leaping", "#00CC33", { + potion_fun = function(player) mcl_potions.leaping_func(player, 1.2, 135) end +}) + +register_splash("leaping_2", "Splash Leaping II", "#00EE33", { + potion_fun = function(player) mcl_potions.leaping_func(player, 1.4, 135) end +}) + +register_splash("leaping_plus", "Splash Leaping +", "#00DD33", { + potion_fun = function(player) mcl_potions.leaping_func(player, 1.2, 360) end +}) + +register_splash("swiftness", "Splash Swiftness", "#009999", { + potion_fun = function(player) mcl_potions.swiftness_func(player, 1.2, 135) end +}) + +register_splash("swiftness_2", "Splash Swiftness II", "#00BBBB", { + potion_fun = function(player) mcl_potions.swiftness_func(player, 1.4, 135) end +}) + +register_splash("swiftness_plus", "Splash Swiftness +", "#00BBBB", { + potion_fun = function(player) mcl_potions.swiftness_func(player, 1.2, 360) end +}) + +register_splash("slowness", "Splash Slowness ", "#000080", { + potion_fun = function(player) mcl_potions.swiftness_func(player, 0.85, 68) end +}) + +register_splash("slowness_plus", "Splash Slowness +", "#000066", { + potion_fun = function(player) mcl_potions.swiftness_func(player, 0.85, 180) end +}) + +register_splash("poison", "Splash Poison", "#335544", { + potion_fun = function(player) mcl_potions.poison_func(player, 0.85, 180) end +}) + +register_splash("poison_2", "Splash Poison II", "#446655", { + potion_fun = function(player) mcl_potions.poison_func(player, 0.85, 180) end +}) + +register_splash("poison_plus", "Splash Poison II", "#557766", { + potion_fun = function(player) mcl_potions.poison_func(player, 0.85, 180) end +}) + +register_splash("regeneration", "Splash Regeneration", "#A52BB2", { + potion_fun = function(player) mcl_potions.regeneration_func(player, 0.85, 180) end +}) + +register_splash("regeneration_2", "Splash Regeneration II", "#B52CC2", { + potion_fun = function(player) mcl_potions.regeneration_func(player, 0.85, 180) end +}) + +register_splash("regeneration_plus", "Splash Regeneration +", "#C53DD3", { + potion_fun = function(player) mcl_potions.regeneration_func(player, 0.85, 180) end +}) + +register_splash("invisibility", "Splash Invisibility", "#B0B0B0", { + potion_fun = function(player) mcl_potions.invisiblility_func(player, 135) end +}) + +register_splash("invisibility", "Splash Invisibility", "#A0A0A0", { + potion_fun = function(player) mcl_potions.invisiblility_func(player, 300) end +}) From 7766368f64ed8c191dd01c2d3e57b3b6d88cf3ab Mon Sep 17 00:00:00 2001 From: bzoss Date: Sat, 13 Jun 2020 17:50:33 -0400 Subject: [PATCH 025/108] Change splash effect with distance. --- mods/ITEMS/mcl_potions/splash.lua | 52 ++++++++++++++++++------------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 8c35b7ef08..360c345d4c 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -36,6 +36,7 @@ local function register_splash(name, descr, color, def) local node = minetest.get_node(pos) local n = node.name local d = 2 + local redux_map = {7/8,0.5,0.25} if n ~= "air" then minetest.sound_play("mcl_potions_breaking_glass") minetest.add_particlespawner({ @@ -56,8 +57,15 @@ local function register_splash(name, descr, color, def) texture = "mcl_potions_sprite.png^[colorize:"..color..":127", }) self.object:remove() - for i, obj in ipairs(minetest.get_objects_inside_radius(pos, 3)) do - if minetest.is_player(obj) then def.potion_fun(obj) end + for i, obj in ipairs(minetest.get_objects_inside_radius(pos, 4)) do + if minetest.is_player(obj) then + + pos2 = obj:get_pos() + local rad = math.floor(math.sqrt((pos2.x-pos.x)^2 + (pos2.y-pos.y)^2 + (pos2.z-pos.z)^2)) + if rad > 0 then def.potion_fun(obj, redux_map[rad]) else def.potion_fun(obj, 1) end + print(obj:get_player_name().." "..math.floor(rad)) + + end end end end, @@ -65,81 +73,81 @@ local function register_splash(name, descr, color, def) end register_splash("healing", "Splash Healing", "#AA0000", { - potion_fun = function(player) player:set_hp(player:get_hp() + 3) end, + potion_fun = function(player, redx) player:set_hp(player:get_hp() + 3*redx) end, }) register_splash("healing_2", "Splash Healing II", "#DD0000", { - potion_fun = function(player) player:set_hp(player:get_hp() + 6) end, + potion_fun = function(player, redx) player:set_hp(player:get_hp() + 6*redx) end, }) register_splash("harming", "Splash Harming", "#660099", { - potion_fun = function(player) mcl_potions.healing_func(player, -4) end, + potion_fun = function(player, redx) mcl_potions.healing_func(player, -4*redx) end, }) register_splash("harming_2", "Splash Harming II", "#330066", { - potion_fun = function(player) mcl_potions.healing_func(player, -6) end, + potion_fun = function(player, redx) mcl_potions.healing_func(player, -6*redx) end, }) register_splash("leaping", "Splash Leaping", "#00CC33", { - potion_fun = function(player) mcl_potions.leaping_func(player, 1.2, 135) end + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, 135*redx) end }) register_splash("leaping_2", "Splash Leaping II", "#00EE33", { - potion_fun = function(player) mcl_potions.leaping_func(player, 1.4, 135) end + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.4, 135*redx) end }) register_splash("leaping_plus", "Splash Leaping +", "#00DD33", { - potion_fun = function(player) mcl_potions.leaping_func(player, 1.2, 360) end + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, 360*redx) end }) register_splash("swiftness", "Splash Swiftness", "#009999", { - potion_fun = function(player) mcl_potions.swiftness_func(player, 1.2, 135) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 135*redx) end }) register_splash("swiftness_2", "Splash Swiftness II", "#00BBBB", { - potion_fun = function(player) mcl_potions.swiftness_func(player, 1.4, 135) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.4, 135*redx) end }) register_splash("swiftness_plus", "Splash Swiftness +", "#00BBBB", { - potion_fun = function(player) mcl_potions.swiftness_func(player, 1.2, 360) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 360*redx) end }) register_splash("slowness", "Splash Slowness ", "#000080", { - potion_fun = function(player) mcl_potions.swiftness_func(player, 0.85, 68) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 68*redx) end }) register_splash("slowness_plus", "Splash Slowness +", "#000066", { - potion_fun = function(player) mcl_potions.swiftness_func(player, 0.85, 180) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 180*redx) end }) register_splash("poison", "Splash Poison", "#335544", { - potion_fun = function(player) mcl_potions.poison_func(player, 0.85, 180) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end }) register_splash("poison_2", "Splash Poison II", "#446655", { - potion_fun = function(player) mcl_potions.poison_func(player, 0.85, 180) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end }) register_splash("poison_plus", "Splash Poison II", "#557766", { - potion_fun = function(player) mcl_potions.poison_func(player, 0.85, 180) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end }) register_splash("regeneration", "Splash Regeneration", "#A52BB2", { - potion_fun = function(player) mcl_potions.regeneration_func(player, 0.85, 180) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 180*redx) end }) register_splash("regeneration_2", "Splash Regeneration II", "#B52CC2", { - potion_fun = function(player) mcl_potions.regeneration_func(player, 0.85, 180) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 180*redx) end }) register_splash("regeneration_plus", "Splash Regeneration +", "#C53DD3", { - potion_fun = function(player) mcl_potions.regeneration_func(player, 0.85, 180) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 300*redx) end }) register_splash("invisibility", "Splash Invisibility", "#B0B0B0", { - potion_fun = function(player) mcl_potions.invisiblility_func(player, 135) end + potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 135*redx) end }) register_splash("invisibility", "Splash Invisibility", "#A0A0A0", { - potion_fun = function(player) mcl_potions.invisiblility_func(player, 300) end + potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 300*redx) end }) From 724ff56bbfa2d744fd4344912620d9685bdc0d1f Mon Sep 17 00:00:00 2001 From: bzoss Date: Tue, 16 Jun 2020 08:13:10 -0400 Subject: [PATCH 026/108] Fix a missed call to mcl_potions:invisible. --- mods/ITEMS/mcl_potions/functions.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index c3b3b4b79a..83120f3743 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -62,6 +62,6 @@ function mcl_potions.regeneration_func(player, factor, duration) end function mcl_potions.invisiblility_func(player, duration) - invisible(player, true) - minetest.after(duration, function() invisible(player, false) end ) + mcl_potions.invisible(player, true) + minetest.after(duration, function() mcl_potions.invisible(player, false) end ) end From 54c1be724dcd3fb5ec19c8df0249cfa6ec607014 Mon Sep 17 00:00:00 2001 From: bzoss Date: Tue, 16 Jun 2020 08:25:42 -0400 Subject: [PATCH 027/108] Increase collision box to fix issues with splash potions not breaking at feet. --- mods/ITEMS/mcl_potions/splash.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 360c345d4c..bffb8b3494 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -22,15 +22,16 @@ local function register_splash(name, descr, color, def) itemstack:take_item() return itemstack end, + stack_max = 100, -- increased stack to test throwing }) - local w = 0.35 + local w = 0.7 minetest.register_entity(id.."_flying",{ textures = {splash_image(color)}, hp_max = 1, - visual_size = {x=w,y=w}, - collisionbox = {-w,-w,-w, w,w,w}, + visual_size = {x=w/2,y=w/2}, + collisionbox = {-w,-w,-w,w,w,w}, on_step = function(self, dtime) local pos = self.object:getpos() local node = minetest.get_node(pos) @@ -52,12 +53,13 @@ local function register_splash(name, descr, color, def) maxexptime = 5, minsize = 2, maxsize = 4, - collisiondetection = true, + collisiondetection = false, vertical = false, texture = "mcl_potions_sprite.png^[colorize:"..color..":127", }) self.object:remove() for i, obj in ipairs(minetest.get_objects_inside_radius(pos, 4)) do + if minetest.is_player(obj) then pos2 = obj:get_pos() From 9fe15c7e12e2e4a5f9e4d45df7e8d92cdcb69757 Mon Sep 17 00:00:00 2001 From: Brandon Date: Tue, 16 Jun 2020 22:29:35 -0400 Subject: [PATCH 028/108] Add invisibility II brewing and correct inversion table (no such thing as slowness +). Add poison to harming inversion. Reduced splash stack max. --- mods/ITEMS/mcl_potions/init.lua | 15 +++++++++------ mods/ITEMS/mcl_potions/splash.lua | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index bfb6fffbfc..fd6787ec20 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -827,10 +827,12 @@ local output_table = { local enhancement_table = {} local extension_table = {} local potions = {} -for i, potion in ipairs({"healing","harming","swiftness","leaping","poison","regeneration"}) do - enhancement_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_2" - table.insert(potions, potion) - table.insert(potions, potion.."_2") +for i, potion in ipairs({"healing","harming","swiftness","leaping","poison","regeneration","invisibility"}) do + if potion ~= "invisibility" and potion ~= "night_vision" then + enhancement_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_2" + table.insert(potions, potion) + table.insert(potions, potion.."_2") + end if potion ~= "healing" and potion ~= "harming" then extension_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_plus" table.insert(potions, potion.."_plus") @@ -842,12 +844,13 @@ local inversion_table = { ["mcl_potions:healing"] = "mcl_potions:harming", ["mcl_potions:healing_2"] = "mcl_potions:harming_2", ["mcl_potions:swiftness"] = "mcl_potions:slowness", - ["mcl_potions:swiftness_2"] = "mcl_potions:slowness_plus", ["mcl_potions:swiftness_plus"] = "mlc_potions:slowness_plus", ["mcl_potions:leaping"] = "mcl_potions:slowness", - ["mcl_potions:leaping_2"] = "mcl_potions:slowness_plus", ["mcl_potions:leaping_plus"] = "mcl_potions:slowness_plus", ["mcl_potions:night_vision"] = "mcl_potions:invisibility", + ["mcl_potions:night_vision_plus"] = "mcl_potions:invisibility_plus", + ["mcl_potions:poison"] = "mcl_potions:harming", + ["mcl_potions:poison_2"] = "mcl_potions:harming_2", } diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index bffb8b3494..19eea39f62 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -22,7 +22,7 @@ local function register_splash(name, descr, color, def) itemstack:take_item() return itemstack end, - stack_max = 100, -- increased stack to test throwing + stack_max = 1, }) local w = 0.7 @@ -59,7 +59,7 @@ local function register_splash(name, descr, color, def) }) self.object:remove() for i, obj in ipairs(minetest.get_objects_inside_radius(pos, 4)) do - + if minetest.is_player(obj) then pos2 = obj:get_pos() From 021492994a035548c5a09c41f34d8007314826fa Mon Sep 17 00:00:00 2001 From: Brandon Date: Wed, 17 Jun 2020 16:49:52 -0400 Subject: [PATCH 029/108] Update the available perturbations of brewing. Include splash enhancement. --- mods/ITEMS/mcl_potions/init.lua | 35 ++++++++++++++++++++++++------- mods/ITEMS/mcl_potions/splash.lua | 12 +++++++++++ 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index fd6787ec20..efa273d7f7 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -260,7 +260,7 @@ minetest.register_craftitem("mcl_potions:potion_river_water", { local how_to_drink = S("Use the “Place” key to drink it.") -minetest.register_craftitem("mcl_potions:potion_awkward", { +minetest.register_craftitem("mcl_potions:awkward", { description = S("Awkward Potion"), _tt_help = S("No effect"), _doc_items_longdesc = S("This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect."), @@ -273,7 +273,7 @@ minetest.register_craftitem("mcl_potions:potion_awkward", { on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"), on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), }) -minetest.register_craftitem("mcl_potions:potion_mundane", { +minetest.register_craftitem("mcl_potions:mundane", { description = S("Mundane Potion"), _tt_help = S("No effect"), _doc_items_longdesc = S("This potion has a clean taste and is used for brewing more potions. Drinking it has no effect."), @@ -288,7 +288,7 @@ minetest.register_craftitem("mcl_potions:potion_mundane", { }) -minetest.register_craftitem("mcl_potions:potion_thick", { +minetest.register_craftitem("mcl_potions:thick", { description = S("Thick Potion"), _tt_help = S("No effect"), _doc_items_longdesc = S("This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect."), @@ -801,8 +801,16 @@ end) -- splash potion effects are reduced by a factor of 3/4 local water_table = { - ["mcl_nether:nether_wart_item"] = "mcl_potions:potion_awkward", + ["mcl_nether:nether_wart_item"] = "mcl_potions:awkward", ["mcl_potions:fermented_spider_eye"] = "mcl_potions:weakness", + ["mcl_potions:speckled_melon"] = "mcl_potions:mundane", + ["mcl_core:sugar"] = "mcl_potions:mundane", + ["mcl_mobitems:magma_cream"] = "mcl_potions:mundane", + ["mcl_mobitems:blaze_powder"] = "mcl_potions:mundane", + ["mesecons:wire_00000000_off"] = "mcl_potions:mundane", + ["mcl_mobitems:ghast_tear"] = "mcl_potions:mundane", + ["mcl_mobitems:spider_eye"] = "mcl_potions:mundane", + ["mcl_mobitems:rabbit_foot"] = "mcl_potions:mundane" } local awkward_table = { @@ -820,21 +828,22 @@ local awkward_table = { local output_table = { ["mcl_potions:potion_river_water"] = water_table, ["mcl_potions:potion_water"] = water_table, - ["mcl_potions:potion_awkward"] = awkward_table, + ["mcl_potions:awkward"] = awkward_table, } local enhancement_table = {} local extension_table = {} -local potions = {} +local potions = {"awkward", "mundane", "thick"} for i, potion in ipairs({"healing","harming","swiftness","leaping","poison","regeneration","invisibility"}) do if potion ~= "invisibility" and potion ~= "night_vision" then enhancement_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_2" + enhancement_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_2_splash" table.insert(potions, potion) table.insert(potions, potion.."_2") end if potion ~= "healing" and potion ~= "harming" then - extension_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_plus" + extension_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_plus_splash" table.insert(potions, potion.."_plus") end end @@ -851,6 +860,16 @@ local inversion_table = { ["mcl_potions:night_vision_plus"] = "mcl_potions:invisibility_plus", ["mcl_potions:poison"] = "mcl_potions:harming", ["mcl_potions:poison_2"] = "mcl_potions:harming_2", + ["mcl_potions:healing_splash"] = "mcl_potions:harming_splash", + ["mcl_potions:healing_2_splash"] = "mcl_potions:harming_2_splash", + ["mcl_potions:swiftness_splash"] = "mcl_potions:slowness_splash", + ["mcl_potions:swiftness_plus_splash"] = "mlc_potions:slowness_plus_splash", + ["mcl_potions:leaping_splash"] = "mcl_potions:slowness_splash", + ["mcl_potions:leaping_plus_splash"] = "mcl_potions:slowness_plus_splash", + ["mcl_potions:night_vision_splash"] = "mcl_potions:invisibility_splash", + ["mcl_potions:night_vision_plus_splash"] = "mcl_potions:invisibility_plus_splash", + ["mcl_potions:poison_splash"] = "mcl_potions:harming_splash", + ["mcl_potions:poison_2_splash"] = "mcl_potions:harming_2_splash", } @@ -881,11 +900,13 @@ function mcl_potions.get_alchemy(ingr, pot) if brew_table[pot] ~= nil then return brew_table[pot] end + elseif splash_table[ingr] ~= nil then local brew_table = mod_table[ingr] if brew_table[pot] ~= nil then return brew_table[pot] end + end return false diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 19eea39f62..958cb49911 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -74,6 +74,18 @@ local function register_splash(name, descr, color, def) }) end +register_splash("awkward", "Splash Awkward Potion", "#0000FF", { + potion_fun = function(player, redx) end, +}) + +register_splash("mundane", "Splash Mundane Potion", "#0000FF", { + potion_fun = function(player, redx) end, +}) + +register_splash("thick", "Splash Thick Potion", "#0000FF", { + potion_fun = function(player, redx) end, +}) + register_splash("healing", "Splash Healing", "#AA0000", { potion_fun = function(player, redx) player:set_hp(player:get_hp() + 3*redx) end, }) From b8256cd447cfd929e4bca28a8bb7583dc322154f Mon Sep 17 00:00:00 2001 From: Brandon Date: Wed, 17 Jun 2020 17:05:44 -0400 Subject: [PATCH 030/108] remove redundant code and add lingering potions -TODO: Add lingering effect --- mods/ITEMS/mcl_potions/init.lua | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index efa273d7f7..a73c2d5930 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -874,9 +874,11 @@ local inversion_table = { local splash_table = {} +local lingering_table = {} for i, potion in ipairs(potions) do splash_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_splash" + lingering_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_lingering" end local mod_table = { @@ -884,6 +886,7 @@ local mod_table = { ["mcl_potions:fermented_spider_eye"] = inversion_table, ["mcl_nether:glowstone_dust"] = enhancement_table, ["mcl_mobitems:gunpowder"] = splash_table, + ["mcl_potions:dragon_breath"] = lingering_table, } -- Compare two ingredients for compatable alchemy @@ -901,12 +904,6 @@ function mcl_potions.get_alchemy(ingr, pot) return brew_table[pot] end - elseif splash_table[ingr] ~= nil then - local brew_table = mod_table[ingr] - if brew_table[pot] ~= nil then - return brew_table[pot] - end - end return false From 454a9c231e7c4b4723290b9ed97fda59cece8f8f Mon Sep 17 00:00:00 2001 From: Brandon Date: Wed, 17 Jun 2020 17:36:15 -0400 Subject: [PATCH 031/108] Correct issues with splash potions disappearing immediately when thrown. --- mods/ITEMS/mcl_potions/splash.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 958cb49911..8074ca7a8e 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -11,7 +11,7 @@ local function register_splash(name, descr, color, def) minetest.register_craftitem(id, { description = descr, inventory_image = splash_image(color), - on_use = function(itemstack, placer, pointed_thing) + on_use = function(item, placer, pointed_thing) --weapons_shot(itemstack, placer, pointed_thing, def.velocity, name) local velocity = 10 local dir = placer:get_look_dir(); @@ -19,8 +19,8 @@ local function register_splash(name, descr, color, def) local obj = minetest.env:add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying") obj:setvelocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity}) obj:setacceleration({x=0, y=-9.8, z=0}) - itemstack:take_item() - return itemstack + item:take_item() + return item end, stack_max = 1, }) @@ -31,7 +31,7 @@ local function register_splash(name, descr, color, def) textures = {splash_image(color)}, hp_max = 1, visual_size = {x=w/2,y=w/2}, - collisionbox = {-w,-w,-w,w,w,w}, + collisionbox = {0,0,0,0,0,0}, on_step = function(self, dtime) local pos = self.object:getpos() local node = minetest.get_node(pos) @@ -65,10 +65,10 @@ local function register_splash(name, descr, color, def) pos2 = obj:get_pos() local rad = math.floor(math.sqrt((pos2.x-pos.x)^2 + (pos2.y-pos.y)^2 + (pos2.z-pos.z)^2)) if rad > 0 then def.potion_fun(obj, redux_map[rad]) else def.potion_fun(obj, 1) end - print(obj:get_player_name().." "..math.floor(rad)) end end + end end, }) From 7c0996b03ca4a59b23fa6ea0dd6064a83f10bebc Mon Sep 17 00:00:00 2001 From: Brandon Date: Wed, 17 Jun 2020 17:44:03 -0400 Subject: [PATCH 032/108] Correct issue with drinking potion not resulting in an empty bottle --- mods/ITEMS/mcl_potions/functions.lua | 4 +- mods/ITEMS/mcl_potions/init.lua | 84 ++++++++++++++-------------- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 83120f3743..886502cfbd 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -26,8 +26,8 @@ function mcl_potions.invisible(player, toggle) end -function mcl_potions._use_potion() - minetest.item_eat(0, "mcl_potions:glass_bottle") +function mcl_potions._use_potion(item) + item:replace("mcl_potions:glass_bottle") minetest.sound_play("mcl_potions_drinking") end diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index a73c2d5930..a013cebaca 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -339,13 +339,13 @@ minetest.register_craftitem("mcl_potions:healing", { on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 4) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 4) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, }) @@ -360,13 +360,13 @@ minetest.register_craftitem("mcl_potions:healing_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 8) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 8) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, @@ -382,13 +382,13 @@ minetest.register_craftitem("mcl_potions:harming", { on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -6) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -6) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, }) @@ -403,13 +403,13 @@ minetest.register_craftitem("mcl_potions:harming_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -12) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -12) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, }) @@ -435,13 +435,13 @@ minetest.register_craftitem("mcl_potions:swiftness", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 180) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 180) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, }) @@ -456,13 +456,13 @@ minetest.register_craftitem("mcl_potions:swiftness_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.4, 90) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.4, 90) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, }) @@ -477,13 +477,13 @@ minetest.register_craftitem("mcl_potions:swiftness_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 480) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 480) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, }) @@ -498,13 +498,13 @@ minetest.register_craftitem("mcl_potions:slowness", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 90) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 90) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, }) @@ -519,13 +519,13 @@ minetest.register_craftitem("mcl_potions:slowness_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 240) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 240) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, }) @@ -541,13 +541,13 @@ minetest.register_craftitem("mcl_potions:leaping", { on_place = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 180) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 180) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, }) @@ -562,13 +562,13 @@ minetest.register_craftitem("mcl_potions:leaping_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.4, 90) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.4, 90) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, }) @@ -583,13 +583,13 @@ minetest.register_craftitem("mcl_potions:leaping_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 480) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 480) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, }) @@ -605,13 +605,13 @@ minetest.register_craftitem("mcl_potions:weakness", { on_place = function(itemstack, user, pointed_thing) mcl_potions.weakness_func(user, 1.2, 180) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.weakness_func(user, 1.2, 180) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end }) @@ -627,13 +627,13 @@ minetest.register_craftitem("mcl_potions:poison", { on_place = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 45) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 45) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end }) @@ -648,13 +648,13 @@ minetest.register_craftitem("mcl_potions:poison_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 1.2, 21) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 1.2, 21) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end }) @@ -669,13 +669,13 @@ minetest.register_craftitem("mcl_potions:poison_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 90) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 90) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end }) @@ -691,13 +691,13 @@ minetest.register_craftitem("mcl_potions:regeneration", { on_place = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 45) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 45) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end }) @@ -712,13 +712,13 @@ minetest.register_craftitem("mcl_potions:regeneration_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 1.2, 21) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 1.2, 21) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end }) @@ -733,13 +733,13 @@ minetest.register_craftitem("mcl_potions:regeneration_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 90) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 90) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end }) @@ -755,13 +755,13 @@ minetest.register_craftitem("mcl_potions:invisibility", { on_place = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 180) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 180) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end }) @@ -776,13 +776,13 @@ minetest.register_craftitem("mcl_potions:invisibility_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 480) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 480) - mcl_potions._use_potion() + mcl_potions._use_potion(itemstack) return itemstack end }) From 2c6f62354b3fa6ac8afa2e0fc063ea893a950657 Mon Sep 17 00:00:00 2001 From: Brandon Date: Wed, 17 Jun 2020 17:50:18 -0400 Subject: [PATCH 033/108] pull potions out of init.lua to better organize --- mods/ITEMS/mcl_potions/init.lua | 522 +--------------------------- mods/ITEMS/mcl_potions/potions.lua | 528 +++++++++++++++++++++++++++++ 2 files changed, 529 insertions(+), 521 deletions(-) create mode 100644 mods/ITEMS/mcl_potions/potions.lua diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index a013cebaca..360d5c2582 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -4,6 +4,7 @@ mcl_potions = {} local modpath = minetest.get_modpath("mcl_potions") dofile(modpath .. "/functions.lua") dofile(modpath .. "/splash.lua") +dofile(modpath .. "/potions.lua") local brewhelp = S("Put this item in an item frame for decoration. It's useless otherwise.") @@ -257,51 +258,6 @@ minetest.register_craftitem("mcl_potions:potion_river_water", { }) - -local how_to_drink = S("Use the “Place” key to drink it.") - -minetest.register_craftitem("mcl_potions:awkward", { - description = S("Awkward Potion"), - _tt_help = S("No effect"), - _doc_items_longdesc = S("This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect."), - _doc_items_usagehelp = how_to_drink, - stack_max = 1, - inventory_image = potion_image("#0000FF"), - wield_image = potion_image("#0000FF"), - -- TODO: Reveal item when it's actually useful - groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=1}, - on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"), - on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), -}) -minetest.register_craftitem("mcl_potions:mundane", { - description = S("Mundane Potion"), - _tt_help = S("No effect"), - _doc_items_longdesc = S("This potion has a clean taste and is used for brewing more potions. Drinking it has no effect."), - _doc_items_usagehelp = how_to_drink, - stack_max = 1, - inventory_image = potion_image("#0000FF"), - wield_image = potion_image("#0000FF"), - -- TODO: Reveal item when it's actually useful - groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=1 }, - on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"), - on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), -}) - - -minetest.register_craftitem("mcl_potions:thick", { - description = S("Thick Potion"), - _tt_help = S("No effect"), - _doc_items_longdesc = S("This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect."), - _doc_items_usagehelp = how_to_drink, - stack_max = 1, - inventory_image = potion_image("#0000FF"), - wield_image = potion_image("#0000FF"), - -- TODO: Reveal item when it's actually useful - groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, - on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"), - on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), -}) - minetest.register_craftitem("mcl_potions:speckled_melon", { description = S("Glistering Melon"), _doc_items_longdesc = S("This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else."), @@ -319,482 +275,6 @@ minetest.register_craft({ } }) -minetest.register_craftitem("mcl_potions:dragon_breath", { - description = S("Dragon's Breath"), - _doc_items_longdesc = brewhelp, - wield_image = "mcl_potions_dragon_breath.png", - inventory_image = "mcl_potions_dragon_breath.png", - groups = { brewitem = 1, not_in_creative_inventory = 0 }, - stack_max = 1, -}) - - -minetest.register_craftitem("mcl_potions:healing", { - description = S("Healing Potion"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#CC0000"), - inventory_image = potion_image("#CC0000"), - groups = { brewitem = 1, food=3, can_eat_when_full=1 }, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.healing_func(user, 4) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.healing_func(user, 4) - mcl_potions._use_potion(itemstack) - return itemstack - end, -}) - -minetest.register_craftitem("mcl_potions:healing_2", { - description = S("Healing Potion II"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#DD0000"), - inventory_image = potion_image("#DD0000"), - groups = { brewitem = 1, food=3, can_eat_when_full=1 }, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.healing_func(user, 8) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.healing_func(user, 8) - mcl_potions._use_potion(itemstack) - return itemstack - end, - -}) - -minetest.register_craftitem("mcl_potions:harming", { - description = S("Harming Potion"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#660099"), - inventory_image = potion_image("#660099"), - groups = { brewitem = 1, food=3, can_eat_when_full=1 }, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.healing_func(user, -6) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.healing_func(user, -6) - mcl_potions._use_potion(itemstack) - return itemstack - end, -}) - -minetest.register_craftitem("mcl_potions:harming_2", { - description = S("Harming Potion II"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#330066"), - inventory_image = potion_image("#330066"), - groups = { brewitem = 1, food=3, can_eat_when_full=1 }, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.healing_func(user, -12) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.healing_func(user, -12) - mcl_potions._use_potion(itemstack) - return itemstack - end, -}) - - -minetest.register_craftitem("mcl_potions:night_vision", { - description = S("Night Vision Potion"), - _doc_items_longdesc = brewhelp, - wield_image = "mcl_potions_night_vision.png", - inventory_image = "mcl_potions_night_vision.png", - groups = { brewitem = 1, food=0}, - stack_max = 1, -}) - - -minetest.register_craftitem("mcl_potions:swiftness", { - description = S("Swiftness Potion"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#009999"), - inventory_image = potion_image("#009999"), - groups = { brewitem = 1, food=0}, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 1.2, 180) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 1.2, 180) - mcl_potions._use_potion(itemstack) - return itemstack - end, -}) - -minetest.register_craftitem("mcl_potions:swiftness_2", { - description = S("Swiftness Potion II"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#00BBBB"), - inventory_image = potion_image("#00BBBB"), - groups = { brewitem = 1, food=0}, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 1.4, 90) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 1.4, 90) - mcl_potions._use_potion(itemstack) - return itemstack - end, -}) - -minetest.register_craftitem("mcl_potions:swiftness_plus", { - description = S("Swiftness Potion +"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#00AAAA"), - inventory_image = potion_image("#00AAAA"), - groups = { brewitem = 1, food=0}, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 1.2, 480) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 1.2, 480) - mcl_potions._use_potion(itemstack) - return itemstack - end, -}) - -minetest.register_craftitem("mcl_potions:slowness", { - description = S("Slowness Potion"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#000080"), - inventory_image = potion_image("#000080"), - groups = { brewitem = 1, food=0}, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 0.85, 90) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 0.85, 90) - mcl_potions._use_potion(itemstack) - return itemstack - end, -}) - -minetest.register_craftitem("mcl_potions:slowness_plus", { - description = S("Slowness Potion +"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#000066"), - inventory_image = potion_image("#000066"), - groups = { brewitem = 1, food=0}, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 0.85, 240) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 0.85, 240) - mcl_potions._use_potion(itemstack) - return itemstack - end, -}) - - -minetest.register_craftitem("mcl_potions:leaping", { - description = S("Leaping Potion"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#00CC33"), - inventory_image = potion_image("#00CC33"), - groups = { brewitem = 1, food=0}, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.2, 180) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.2, 180) - mcl_potions._use_potion(itemstack) - return itemstack - end, -}) - -minetest.register_craftitem("mcl_potions:leaping_2", { - description = S("Leaping Potion II"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#00EE33"), - inventory_image = potion_image("#00EE33"), - groups = { brewitem = 1, food=0}, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.4, 90) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.4, 90) - mcl_potions._use_potion(itemstack) - return itemstack - end, -}) - -minetest.register_craftitem("mcl_potions:leaping_plus", { - description = S("Leaping Potion +"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#00DD33"), - inventory_image = potion_image("#00DD33"), - groups = { brewitem = 1, food=0}, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.2, 480) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.2, 480) - mcl_potions._use_potion(itemstack) - return itemstack - end, -}) - - -minetest.register_craftitem("mcl_potions:weakness", { - description = S("Weakness Potion"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#6600AA"), - inventory_image = potion_image("#6600AA"), - groups = { brewitem = 1, food=0}, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.weakness_func(user, 1.2, 180) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.weakness_func(user, 1.2, 180) - mcl_potions._use_potion(itemstack) - return itemstack - end -}) - - -minetest.register_craftitem("mcl_potions:poison", { - description = S("Poison Potion"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#225533"), - inventory_image = potion_image("#225533"), - groups = { brewitem = 1, food = 0 }, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.poison_func(user, 2.5, 45) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.poison_func(user, 2.5, 45) - mcl_potions._use_potion(itemstack) - return itemstack - end -}) - -minetest.register_craftitem("mcl_potions:poison_2", { - description = S("Poison Potion II"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#447755"), - inventory_image = potion_image("#447755"), - groups = { brewitem = 1, food = 0 }, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.poison_func(user, 1.2, 21) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.poison_func(user, 1.2, 21) - mcl_potions._use_potion(itemstack) - return itemstack - end -}) - -minetest.register_craftitem("mcl_potions:poison_plus", { - description = S("Poison Potion +"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#336644"), - inventory_image = potion_image("#336644"), - groups = { brewitem = 1, food = 0 }, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.poison_func(user, 2.5, 90) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.poison_func(user, 2.5, 90) - mcl_potions._use_potion(itemstack) - return itemstack - end -}) - - -minetest.register_craftitem("mcl_potions:regeneration", { - description = S("Regeneration Potion"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#A52BB2"), - inventory_image = potion_image("#A52BB2"), - groups = { brewitem = 1, food = 0 }, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 2.5, 45) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 2.5, 45) - mcl_potions._use_potion(itemstack) - return itemstack - end -}) - -minetest.register_craftitem("mcl_potions:regeneration_2", { - description = S("Regeneration Potion II"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#B52CC2"), - inventory_image = potion_image("#B52CC2"), - groups = { brewitem = 1, food = 0 }, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 1.2, 21) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 1.2, 21) - mcl_potions._use_potion(itemstack) - return itemstack - end -}) - -minetest.register_craftitem("mcl_potions:regeneration_plus", { - description = S("Regeneration Potion +"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#C53DD3"), - inventory_image = potion_image("#C53DD3"), - groups = { brewitem = 1, food = 0 }, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 2.5, 90) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 2.5, 90) - mcl_potions._use_potion(itemstack) - return itemstack - end -}) - - -minetest.register_craftitem("mcl_potions:invisibility", { - description = S("Invisibility Potion"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#B0B0B0"), - inventory_image = potion_image("#B0B0B0"), - groups = { brewitem = 1, food = 0 }, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.invisiblility_func(user, 180) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.invisiblility_func(user, 180) - mcl_potions._use_potion(itemstack) - return itemstack - end -}) - -minetest.register_craftitem("mcl_potions:invisibility_plus", { - description = S("Invisibility Potion +"), - _doc_items_longdesc = brewhelp, - wield_image = potion_image("#A0A0A0"), - inventory_image = potion_image("#A0A0A0"), - groups = { brewitem = 1, food = 0 }, - stack_max = 1, - - on_place = function(itemstack, user, pointed_thing) - mcl_potions.invisiblility_func(user, 480) - mcl_potions._use_potion(itemstack) - return itemstack - end, - - on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.invisiblility_func(user, 480) - mcl_potions._use_potion(itemstack) - return itemstack - end -}) - --- Look into reducing attack on punch -minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing) - if puncher:get_attribute("weakness") then - print("Weakness Active") - end -end) - - -- duration effects of redstone are a factor of 8/3 -- duration effects of glowstone are a time factor of 1/2 and effect of 14/12 diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua new file mode 100644 index 0000000000..454867b30a --- /dev/null +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -0,0 +1,528 @@ +local S = minetest.get_translator("mcl_potions") + +local potion_image = function(colorstring, opacity) + if not opacity then + opacity = 127 + end + return "mcl_potions_potion_overlay.png^[colorize:"..colorstring..":"..tostring(opacity).."^mcl_potions_potion_bottle_drinkable.png" +end + +local how_to_drink = S("Use the “Place” key to drink it.") + +minetest.register_craftitem("mcl_potions:awkward", { + description = S("Awkward Potion"), + _tt_help = S("No effect"), + _doc_items_longdesc = S("This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect."), + _doc_items_usagehelp = how_to_drink, + stack_max = 1, + inventory_image = potion_image("#0000FF"), + wield_image = potion_image("#0000FF"), + -- TODO: Reveal item when it's actually useful + groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=1}, + on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"), + on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), +}) +minetest.register_craftitem("mcl_potions:mundane", { + description = S("Mundane Potion"), + _tt_help = S("No effect"), + _doc_items_longdesc = S("This potion has a clean taste and is used for brewing more potions. Drinking it has no effect."), + _doc_items_usagehelp = how_to_drink, + stack_max = 1, + inventory_image = potion_image("#0000FF"), + wield_image = potion_image("#0000FF"), + -- TODO: Reveal item when it's actually useful + groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=1 }, + on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"), + on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), +}) + + +minetest.register_craftitem("mcl_potions:thick", { + description = S("Thick Potion"), + _tt_help = S("No effect"), + _doc_items_longdesc = S("This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect."), + _doc_items_usagehelp = how_to_drink, + stack_max = 1, + inventory_image = potion_image("#0000FF"), + wield_image = potion_image("#0000FF"), + -- TODO: Reveal item when it's actually useful + groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, + on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"), + on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), +}) + + +minetest.register_craftitem("mcl_potions:dragon_breath", { + description = S("Dragon's Breath"), + _doc_items_longdesc = brewhelp, + wield_image = "mcl_potions_dragon_breath.png", + inventory_image = "mcl_potions_dragon_breath.png", + groups = { brewitem = 1, not_in_creative_inventory = 0 }, + stack_max = 1, +}) + + +minetest.register_craftitem("mcl_potions:healing", { + description = S("Healing Potion"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#CC0000"), + inventory_image = potion_image("#CC0000"), + groups = { brewitem = 1, food=3, can_eat_when_full=1 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.healing_func(user, 4) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.healing_func(user, 4) + mcl_potions._use_potion(itemstack) + return itemstack + end, +}) + +minetest.register_craftitem("mcl_potions:healing_2", { + description = S("Healing Potion II"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#DD0000"), + inventory_image = potion_image("#DD0000"), + groups = { brewitem = 1, food=3, can_eat_when_full=1 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.healing_func(user, 8) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.healing_func(user, 8) + mcl_potions._use_potion(itemstack) + return itemstack + end, + +}) + +minetest.register_craftitem("mcl_potions:harming", { + description = S("Harming Potion"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#660099"), + inventory_image = potion_image("#660099"), + groups = { brewitem = 1, food=3, can_eat_when_full=1 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.healing_func(user, -6) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.healing_func(user, -6) + mcl_potions._use_potion(itemstack) + return itemstack + end, +}) + +minetest.register_craftitem("mcl_potions:harming_2", { + description = S("Harming Potion II"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#330066"), + inventory_image = potion_image("#330066"), + groups = { brewitem = 1, food=3, can_eat_when_full=1 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.healing_func(user, -12) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.healing_func(user, -12) + mcl_potions._use_potion(itemstack) + return itemstack + end, +}) + + +minetest.register_craftitem("mcl_potions:night_vision", { + description = S("Night Vision Potion"), + _doc_items_longdesc = brewhelp, + wield_image = "mcl_potions_night_vision.png", + inventory_image = "mcl_potions_night_vision.png", + groups = { brewitem = 1, food=0}, + stack_max = 1, +}) + + +minetest.register_craftitem("mcl_potions:swiftness", { + description = S("Swiftness Potion"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#009999"), + inventory_image = potion_image("#009999"), + groups = { brewitem = 1, food=0}, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.swiftness_func(user, 1.2, 180) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.swiftness_func(user, 1.2, 180) + mcl_potions._use_potion(itemstack) + return itemstack + end, +}) + +minetest.register_craftitem("mcl_potions:swiftness_2", { + description = S("Swiftness Potion II"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#00BBBB"), + inventory_image = potion_image("#00BBBB"), + groups = { brewitem = 1, food=0}, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.swiftness_func(user, 1.4, 90) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.swiftness_func(user, 1.4, 90) + mcl_potions._use_potion(itemstack) + return itemstack + end, +}) + +minetest.register_craftitem("mcl_potions:swiftness_plus", { + description = S("Swiftness Potion +"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#00AAAA"), + inventory_image = potion_image("#00AAAA"), + groups = { brewitem = 1, food=0}, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.swiftness_func(user, 1.2, 480) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.swiftness_func(user, 1.2, 480) + mcl_potions._use_potion(itemstack) + return itemstack + end, +}) + +minetest.register_craftitem("mcl_potions:slowness", { + description = S("Slowness Potion"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#000080"), + inventory_image = potion_image("#000080"), + groups = { brewitem = 1, food=0}, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.swiftness_func(user, 0.85, 90) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.swiftness_func(user, 0.85, 90) + mcl_potions._use_potion(itemstack) + return itemstack + end, +}) + +minetest.register_craftitem("mcl_potions:slowness_plus", { + description = S("Slowness Potion +"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#000066"), + inventory_image = potion_image("#000066"), + groups = { brewitem = 1, food=0}, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.swiftness_func(user, 0.85, 240) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.swiftness_func(user, 0.85, 240) + mcl_potions._use_potion(itemstack) + return itemstack + end, +}) + + +minetest.register_craftitem("mcl_potions:leaping", { + description = S("Leaping Potion"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#00CC33"), + inventory_image = potion_image("#00CC33"), + groups = { brewitem = 1, food=0}, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.leaping_func(user, 1.2, 180) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.leaping_func(user, 1.2, 180) + mcl_potions._use_potion(itemstack) + return itemstack + end, +}) + +minetest.register_craftitem("mcl_potions:leaping_2", { + description = S("Leaping Potion II"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#00EE33"), + inventory_image = potion_image("#00EE33"), + groups = { brewitem = 1, food=0}, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.leaping_func(user, 1.4, 90) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.leaping_func(user, 1.4, 90) + mcl_potions._use_potion(itemstack) + return itemstack + end, +}) + +minetest.register_craftitem("mcl_potions:leaping_plus", { + description = S("Leaping Potion +"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#00DD33"), + inventory_image = potion_image("#00DD33"), + groups = { brewitem = 1, food=0}, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.leaping_func(user, 1.2, 480) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.leaping_func(user, 1.2, 480) + mcl_potions._use_potion(itemstack) + return itemstack + end, +}) + + +minetest.register_craftitem("mcl_potions:weakness", { + description = S("Weakness Potion"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#6600AA"), + inventory_image = potion_image("#6600AA"), + groups = { brewitem = 1, food=0}, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.weakness_func(user, 1.2, 180) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.weakness_func(user, 1.2, 180) + mcl_potions._use_potion(itemstack) + return itemstack + end +}) + + +minetest.register_craftitem("mcl_potions:poison", { + description = S("Poison Potion"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#225533"), + inventory_image = potion_image("#225533"), + groups = { brewitem = 1, food = 0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.poison_func(user, 2.5, 45) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.poison_func(user, 2.5, 45) + mcl_potions._use_potion(itemstack) + return itemstack + end +}) + +minetest.register_craftitem("mcl_potions:poison_2", { + description = S("Poison Potion II"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#447755"), + inventory_image = potion_image("#447755"), + groups = { brewitem = 1, food = 0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.poison_func(user, 1.2, 21) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.poison_func(user, 1.2, 21) + mcl_potions._use_potion(itemstack) + return itemstack + end +}) + +minetest.register_craftitem("mcl_potions:poison_plus", { + description = S("Poison Potion +"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#336644"), + inventory_image = potion_image("#336644"), + groups = { brewitem = 1, food = 0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.poison_func(user, 2.5, 90) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.poison_func(user, 2.5, 90) + mcl_potions._use_potion(itemstack) + return itemstack + end +}) + + +minetest.register_craftitem("mcl_potions:regeneration", { + description = S("Regeneration Potion"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#A52BB2"), + inventory_image = potion_image("#A52BB2"), + groups = { brewitem = 1, food = 0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.regeneration_func(user, 2.5, 45) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.regeneration_func(user, 2.5, 45) + mcl_potions._use_potion(itemstack) + return itemstack + end +}) + +minetest.register_craftitem("mcl_potions:regeneration_2", { + description = S("Regeneration Potion II"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#B52CC2"), + inventory_image = potion_image("#B52CC2"), + groups = { brewitem = 1, food = 0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.regeneration_func(user, 1.2, 21) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.regeneration_func(user, 1.2, 21) + mcl_potions._use_potion(itemstack) + return itemstack + end +}) + +minetest.register_craftitem("mcl_potions:regeneration_plus", { + description = S("Regeneration Potion +"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#C53DD3"), + inventory_image = potion_image("#C53DD3"), + groups = { brewitem = 1, food = 0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.regeneration_func(user, 2.5, 90) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.regeneration_func(user, 2.5, 90) + mcl_potions._use_potion(itemstack) + return itemstack + end +}) + + +minetest.register_craftitem("mcl_potions:invisibility", { + description = S("Invisibility Potion"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#B0B0B0"), + inventory_image = potion_image("#B0B0B0"), + groups = { brewitem = 1, food = 0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.invisiblility_func(user, 180) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.invisiblility_func(user, 180) + mcl_potions._use_potion(itemstack) + return itemstack + end +}) + +minetest.register_craftitem("mcl_potions:invisibility_plus", { + description = S("Invisibility Potion +"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#A0A0A0"), + inventory_image = potion_image("#A0A0A0"), + groups = { brewitem = 1, food = 0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.invisiblility_func(user, 480) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.invisiblility_func(user, 480) + mcl_potions._use_potion(itemstack) + return itemstack + end +}) + +-- Look into reducing attack on punch +minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing) + if puncher:get_attribute("weakness") then + print("Weakness Active") + end +end) From 56a89405107fd3cd9c913a3284f8c9974aa51f62 Mon Sep 17 00:00:00 2001 From: Brandon Date: Wed, 17 Jun 2020 22:17:16 -0400 Subject: [PATCH 034/108] Correct for splash invisibility. Add weakness + and splash potions. --- mods/ITEMS/mcl_potions/init.lua | 11 ++++++++--- mods/ITEMS/mcl_potions/potions.lua | 25 +++++++++++++++++++++++-- mods/ITEMS/mcl_potions/splash.lua | 12 ++++++++++-- 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 360d5c2582..beb2121452 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -315,17 +315,22 @@ local output_table = { local enhancement_table = {} local extension_table = {} local potions = {"awkward", "mundane", "thick"} -for i, potion in ipairs({"healing","harming","swiftness","leaping","poison","regeneration","invisibility"}) do - if potion ~= "invisibility" and potion ~= "night_vision" then +for i, potion in ipairs({"healing","harming","swiftness","leaping","poison","regeneration","invisibility","weakness"}) do + + table.insert(potions, potion) + + if potion ~= "invisibility" and potion ~= "night_vision" and potion ~= "weakness" then enhancement_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_2" enhancement_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_2_splash" - table.insert(potions, potion) table.insert(potions, potion.."_2") end + if potion ~= "healing" and potion ~= "harming" then extension_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_plus_splash" + extension_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_plus" table.insert(potions, potion.."_plus") end + end diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index 454867b30a..32ddb37807 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -337,13 +337,34 @@ minetest.register_craftitem("mcl_potions:weakness", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.weakness_func(user, 1.2, 180) + mcl_potions.weakness_func(user, 1.2, 90) mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.weakness_func(user, 1.2, 180) + mcl_potions.weakness_func(user, 1.2, 90) + mcl_potions._use_potion(itemstack) + return itemstack + end +}) + +minetest.register_craftitem("mcl_potions:weakness_plus", { + description = S("Weakness Potion +"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#7700BB"), + inventory_image = potion_image("#7700BB"), + groups = { brewitem = 1, food=0}, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.weakness_func(user, 1.4, 240) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.weakness_func(user, 1.4, 240) mcl_potions._use_potion(itemstack) return itemstack end diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 8074ca7a8e..8cc6209955 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -142,7 +142,7 @@ register_splash("poison_2", "Splash Poison II", "#446655", { potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end }) -register_splash("poison_plus", "Splash Poison II", "#557766", { +register_splash("poison_plus", "Splash Poison +", "#557766", { potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end }) @@ -162,6 +162,14 @@ register_splash("invisibility", "Splash Invisibility", "#B0B0B0", { potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 135*redx) end }) -register_splash("invisibility", "Splash Invisibility", "#A0A0A0", { +register_splash("invisibility_plus", "Splash Invisibility +", "#A0A0A0", { potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 300*redx) end }) + +register_splash("weakness", "Splash Weakness", "#6600AA", { + potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.2, 68*redx) end +}) + +register_splash("weakness_plus", "Splash Weakness +", "#7700BB", { + potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.4, 180*redx) end +}) From 5db4adb58f82e15df6c3446fc1ba473540eda8aa Mon Sep 17 00:00:00 2001 From: Brandon Date: Wed, 17 Jun 2020 22:29:34 -0400 Subject: [PATCH 035/108] fix readme - I don't want my e-mail plastered on the internet... --- README.md | 5 +---- mods/CORE/mcl_explosions/init.lua | 4 ---- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/README.md b/README.md index f56e131bad..b412826965 100644 --- a/README.md +++ b/README.md @@ -201,11 +201,8 @@ There are so many people to list (sorry). Check out the respective mod directori * [Rootyjr](https://github.com/Rootyjr): Fishing rod and bugfixes * [aligator](https://github.com/aligator): Improvement of doors * [ryvnf](https://github.com/ryvnf): Explosion mechanics -<<<<<<< HEAD * MysticTempest: Bugfixes -======= -* bzoss : Brewing Stand ->>>>>>> 56a89405107fd3cd9c913a3284f8c9974aa51f62 +* bzoss : Brewing Stand * Lots of other people: TO BE WRITTEN (see mod directories for details) #### Mod credits (summary) diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index 47e4e89c4d..2c7e69cdc9 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -343,11 +343,7 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance, fire, minetest.bulk_set_node(airs, {name="air"}) end if #fires > 0 then -<<<<<<< HEAD minetest.bulk_set_node(fires, {name="mcl_fire:fire"}) -======= - minetest.bulk_set_node(fires, {name="mcl_core:fire"}) ->>>>>>> 56a89405107fd3cd9c913a3284f8c9974aa51f62 end -- Update falling nodes for a=1, #airs do From 3a361d441850d8df44a05efa160cabe11ec83e1c Mon Sep 17 00:00:00 2001 From: Brandon Date: Wed, 17 Jun 2020 22:30:37 -0400 Subject: [PATCH 036/108] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b412826965..d33cda76a6 100644 --- a/README.md +++ b/README.md @@ -202,7 +202,7 @@ There are so many people to list (sorry). Check out the respective mod directori * [aligator](https://github.com/aligator): Improvement of doors * [ryvnf](https://github.com/ryvnf): Explosion mechanics * MysticTempest: Bugfixes -* bzoss : Brewing Stand +* [bzoss](https://github.com/bzoss): Brewing Stand * Lots of other people: TO BE WRITTEN (see mod directories for details) #### Mod credits (summary) From 64cd19218f49b1585de581902e3f59ff781a7a43 Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 18 Jun 2020 07:43:50 -0400 Subject: [PATCH 037/108] Cleanup brewing stand code. Add lingering base structure add splash river water and water. --- mods/ITEMS/mcl_brewing/init.lua | 39 +----- mods/ITEMS/mcl_potions/init.lua | 19 ++- mods/ITEMS/mcl_potions/lingering.lua | 183 +++++++++++++++++++++++++++ mods/ITEMS/mcl_potions/splash.lua | 8 ++ 4 files changed, 208 insertions(+), 41 deletions(-) create mode 100644 mods/ITEMS/mcl_potions/lingering.lua diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 73ddb9840d..a345c52060 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -134,6 +134,7 @@ local function brewing_stand_timer(pos, elapsed) -- return 1 -- end -- end + local brew_output = brewable(inv) if fuel ~= 0 and brew_output then @@ -286,13 +287,9 @@ if minetest.get_modpath("screwdriver") then end local doc_string = - S("To use an brewing_stand, rightclick it. An brewing_stand has 2 input slots (on the left) and one output slot.").."\n".. - S("To rename items, put an item stack in one of the item slots while keeping the other input slot empty. Type in a name, hit enter or “Set Name”, then take the renamed item from the output slot.").."\n".. - S("There are two possibilities to repair tools (and armor):").."\n".. - S("• Tool + Tool: Place two tools of the same type in the input slots. The “health” of the repaired tool is the sum of the “health” of both input tools, plus a 12% bonus.").."\n".. - S("• Tool + Material: Some tools can also be repaired by combining them with an item that it's made of. For example, iron pickaxes can be repaired with iron ingots. This repairs the tool by 25%.").."\n".. - S("Armor counts as a tool. It is possible to repair and rename a tool in a single step.").."\n\n".. - S("The brewing_stand has limited durability and 3 damage levels: undamaged, slightly damaged and very damaged. Each time you repair or rename something, there is a 12% chance the brewing_stand gets damaged. brewing_stand also have a chance of being damaged when they fall by more than 1 block. If a very damaged brewing_stand is damaged again, it is destroyed.") + S("To use an brewing_stand, rightclick it.").."\n" + S("To brew, place fuel first and/or your ingredient last!") + local tiles = {"mcl_brewing_top.png", --top "mcl_brewing_base.png", --bottom "mcl_brewing_side.png", --right @@ -424,8 +421,6 @@ minetest.register_node("mcl_brewing:stand_000", { inv:set_size("input", 1) inv:set_size("fuel", 1) inv:set_size("stand", 3) - -- inv:set_size("stand2", 1) - -- inv:set_size("stand3", 1) local form = brewing_formspec meta:set_string("formspec", form) end, @@ -511,8 +506,6 @@ minetest.register_node("mcl_brewing:stand_100", { inv:set_size("input", 1) inv:set_size("fuel", 1) inv:set_size("stand", 3) - -- inv:set_size("stand2", 1) - -- inv:set_size("stand3", 1) local form = brewing_formspec meta:set_string("formspec", form) end, @@ -597,8 +590,6 @@ minetest.register_node("mcl_brewing:stand_010", { inv:set_size("input", 1) inv:set_size("fuel", 1) inv:set_size("stand", 3) - -- inv:set_size("stand2", 1) - -- inv:set_size("stand3", 1) local form = brewing_formspec meta:set_string("formspec", form) end, @@ -683,8 +674,6 @@ minetest.register_node("mcl_brewing:stand_001", { inv:set_size("input", 1) inv:set_size("fuel", 1) inv:set_size("stand", 3) - -- inv:set_size("stand2", 1) - -- inv:set_size("stand3", 1) local form = brewing_formspec meta:set_string("formspec", form) end, @@ -769,8 +758,6 @@ minetest.register_node("mcl_brewing:stand_110", { inv:set_size("input", 1) inv:set_size("fuel", 1) inv:set_size("stand", 3) - -- inv:set_size("stand2", 1) - -- inv:set_size("stand3", 1) local form = brewing_formspec meta:set_string("formspec", form) end, @@ -855,8 +842,6 @@ minetest.register_node("mcl_brewing:stand_101", { inv:set_size("input", 1) inv:set_size("fuel", 1) inv:set_size("stand", 3) - -- inv:set_size("stand2", 1) - -- inv:set_size("stand3", 1) local form = brewing_formspec meta:set_string("formspec", form) end, @@ -941,8 +926,6 @@ minetest.register_node("mcl_brewing:stand_011", { inv:set_size("input", 1) inv:set_size("fuel", 1) inv:set_size("stand", 3) - -- inv:set_size("stand2", 1) - -- inv:set_size("stand3", 1) local form = brewing_formspec meta:set_string("formspec", form) end, @@ -1027,8 +1010,6 @@ minetest.register_node("mcl_brewing:stand_111", { inv:set_size("input", 1) inv:set_size("fuel", 1) inv:set_size("stand", 3) - -- inv:set_size("stand2", 1) - -- inv:set_size("stand3", 1) local form = brewing_formspec meta:set_string("formspec", form) end, @@ -1052,15 +1033,3 @@ minetest.register_craft({ { "mcl_core:stone_smooth", "mcl_core:stone_smooth", "mcl_core:stone_smooth" }, } }) - --- Legacy -minetest.register_lbm({ - label = "Update brewing_stand formspecs (0.60.0", - name = "mcl_brewing:update_formspec_0_60_0", - --nodenames = { "group:brewing_stand" }, - run_at_every_load = false, - action = function(pos, node) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", brewing_formspec) - end, -}) diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index beb2121452..9113721211 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -4,6 +4,7 @@ mcl_potions = {} local modpath = minetest.get_modpath("mcl_potions") dofile(modpath .. "/functions.lua") dofile(modpath .. "/splash.lua") +dofile(modpath .. "/lingering.lua") dofile(modpath .. "/potions.lua") local brewhelp = S("Put this item in an item frame for decoration. It's useless otherwise.") @@ -93,9 +94,9 @@ minetest.register_craftitem("mcl_potions:glass_bottle", { -- place the water potion at a place where's space local water_bottle if river_water then - water_bottle = ItemStack("mcl_potions:potion_river_water") + water_bottle = ItemStack("mcl_potions:river_water") else - water_bottle = ItemStack("mcl_potions:potion_water") + water_bottle = ItemStack("mcl_potions:water") end local inv = placer:get_inventory() if creative then @@ -166,7 +167,7 @@ end -- Itemstring of potions is “mcl_potions:potion_” -minetest.register_craftitem("mcl_potions:potion_water", { +minetest.register_craftitem("mcl_potions:water", { description = S("Water Bottle"), _tt_help = S("No effect"), _doc_items_longdesc = S("Water bottles can be used to fill cauldrons. Drinking water has no effect."), @@ -211,7 +212,7 @@ minetest.register_craftitem("mcl_potions:potion_water", { on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), }) -minetest.register_craftitem("mcl_potions:potion_river_water", { +minetest.register_craftitem("mcl_potions:river_water", { description = S("River Water Bottle"), _tt_help = S("No effect"), _doc_items_longdesc = S("River water bottles can be used to fill cauldrons. Drinking it has no effect."), @@ -306,8 +307,8 @@ local awkward_table = { } local output_table = { - ["mcl_potions:potion_river_water"] = water_table, - ["mcl_potions:potion_water"] = water_table, + ["mcl_potions:river_water"] = water_table, + ["mcl_potions:water"] = water_table, ["mcl_potions:awkward"] = awkward_table, } @@ -366,6 +367,12 @@ for i, potion in ipairs(potions) do lingering_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_lingering" end +splash_table["mcl_potions:water"] = "mcl_potions:water_splash" +splash_table["mcl_potions:river_water"] = "mcl_potions:river_water_splash" + +lingering_table["mcl_potions:water_splash"] = "mcl_potions:lingering" +lingering_table["mcl_potions:river_water_splash"] = "mcl_potions:lingering" + local mod_table = { ["mesecons:wire_00000000_off"] = extension_table, ["mcl_potions:fermented_spider_eye"] = inversion_table, diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua new file mode 100644 index 0000000000..cb48464e04 --- /dev/null +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -0,0 +1,183 @@ +local lingering_image = function(colorstring, opacity) + if not opacity then + opacity = 127 + end + return "mcl_potions_splash_overlay.png^[colorize:"..colorstring..":"..tostring(opacity).."^mcl_potions_splash_bottle.png" +end + +local function register_lingering(name, descr, color, def) + + local id = "mcl_potions:"..name.."_lingering" + minetest.register_craftitem(id, { + description = descr, + inventory_image = lingering_image(color), + on_use = function(item, placer, pointed_thing) + --weapons_shot(itemstack, placer, pointed_thing, def.velocity, name) + local velocity = 10 + local dir = placer:get_look_dir(); + local pos = placer:getpos(); + local obj = minetest.env:add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying") + obj:setvelocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity}) + obj:setacceleration({x=0, y=-9.8, z=0}) + item:take_item() + return item + end, + stack_max = 1, + }) + + local w = 0.7 + + minetest.register_entity(id.."_flying",{ + textures = {lingering_image(color)}, + hp_max = 1, + visual_size = {x=w/2,y=w/2}, + collisionbox = {0,0,0,0,0,0}, + on_step = function(self, dtime) + local pos = self.object:getpos() + local node = minetest.get_node(pos) + local n = node.name + local d = 2 + local redux_map = {7/8,0.5,0.25} + if n ~= "air" then + minetest.sound_play("mcl_potions_breaking_glass") + minetest.add_particlespawner({ + amount = 100, + time = 30, + minpos = {x=pos.x-d, y=pos.y, z=pos.z-d}, + maxpos = {x=pos.x+d, y=pos.y+1, z=pos.z+d}, + minvel = {x=-0.5, y=0, z=-0.5}, + maxvel = {x=0.5, y=0.5, z=0.5}, + minacc = {x=-0.25, y=0, z=-0.25}, + maxacc = {x=0.25, y=.1, z=0.25}, + minexptime = 1, + maxexptime = 5, + minsize = 2, + maxsize = 4, + collisiondetection = false, + vertical = false, + texture = "mcl_potions_sprite.png^[colorize:"..color..":127", + }) + self.object:remove() + for i, obj in ipairs(minetest.get_objects_inside_radius(pos, 4)) do + + if minetest.is_player(obj) then + + pos2 = obj:get_pos() + local rad = math.floor(math.sqrt((pos2.x-pos.x)^2 + (pos2.y-pos.y)^2 + (pos2.z-pos.z)^2)) + if rad > 0 then def.potion_fun(obj, redux_map[rad]) else def.potion_fun(obj, 1) end + + end + end + + end + end, + }) +end + +register_lingering("water", "Lingering Water", "#0000FF", { + potion_fun = function(player, redx) end, +}) + +register_lingering("river_water", "Lingering River Water", "#0000FF", { + potion_fun = function(player, redx) end, +}) + +register_lingering("awkward", "Lingering Awkward Potion", "#0000FF", { + potion_fun = function(player, redx) end, +}) + +register_lingering("mundane", "Lingering Mundane Potion", "#0000FF", { + potion_fun = function(player, redx) end, +}) + +register_lingering("thick", "Lingering Thick Potion", "#0000FF", { + potion_fun = function(player, redx) end, +}) + +register_lingering("healing", "Lingering Healing", "#AA0000", { + potion_fun = function(player, redx) player:set_hp(player:get_hp() + 3*redx) end, +}) + +register_lingering("healing_2", "Lingering Healing II", "#DD0000", { + potion_fun = function(player, redx) player:set_hp(player:get_hp() + 6*redx) end, +}) + +register_lingering("harming", "Lingering Harming", "#660099", { + potion_fun = function(player, redx) mcl_potions.healing_func(player, -4*redx) end, +}) + +register_lingering("harming_2", "Lingering Harming II", "#330066", { + potion_fun = function(player, redx) mcl_potions.healing_func(player, -6*redx) end, +}) + +register_lingering("leaping", "Lingering Leaping", "#00CC33", { + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, 135*redx) end +}) + +register_lingering("leaping_2", "Lingering Leaping II", "#00EE33", { + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.4, 135*redx) end +}) + +register_lingering("leaping_plus", "Lingering Leaping +", "#00DD33", { + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, 360*redx) end +}) + +register_lingering("swiftness", "Lingering Swiftness", "#009999", { + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 135*redx) end +}) + +register_lingering("swiftness_2", "Lingering Swiftness II", "#00BBBB", { + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.4, 135*redx) end +}) + +register_lingering("swiftness_plus", "Lingering Swiftness +", "#00BBBB", { + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 360*redx) end +}) + +register_lingering("slowness", "Lingering Slowness ", "#000080", { + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 68*redx) end +}) + +register_lingering("slowness_plus", "Lingering Slowness +", "#000066", { + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 180*redx) end +}) + +register_lingering("poison", "Lingering Poison", "#335544", { + potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end +}) + +register_lingering("poison_2", "Lingering Poison II", "#446655", { + potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end +}) + +register_lingering("poison_plus", "Lingering Poison +", "#557766", { + potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end +}) + +register_lingering("regeneration", "Lingering Regeneration", "#A52BB2", { + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 180*redx) end +}) + +register_lingering("regeneration_2", "Lingering Regeneration II", "#B52CC2", { + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 180*redx) end +}) + +register_lingering("regeneration_plus", "Lingering Regeneration +", "#C53DD3", { + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 300*redx) end +}) + +register_lingering("invisibility", "Lingering Invisibility", "#B0B0B0", { + potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 135*redx) end +}) + +register_lingering("invisibility_plus", "Lingering Invisibility +", "#A0A0A0", { + potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 300*redx) end +}) + +register_lingering("weakness", "Lingering Weakness", "#6600AA", { + potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.2, 68*redx) end +}) + +register_lingering("weakness_plus", "Lingering Weakness +", "#7700BB", { + potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.4, 180*redx) end +}) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 8cc6209955..104f5f51d6 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -74,6 +74,14 @@ local function register_splash(name, descr, color, def) }) end +register_splash("water", "Splash Water", "#0000FF", { + potion_fun = function(player, redx) end, +}) + +register_splash("river_water", "Splash River Water", "#0000FF", { + potion_fun = function(player, redx) end, +}) + register_splash("awkward", "Splash Awkward Potion", "#0000FF", { potion_fun = function(player, redx) end, }) From 9f5bce29cb7ed8fc71b174368227e065d57b56cb Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 18 Jun 2020 12:27:09 -0400 Subject: [PATCH 038/108] Add more lingering options. Adjust lingering cloud size. --- mods/ITEMS/mcl_potions/init.lua | 8 ++++---- mods/ITEMS/mcl_potions/lingering.lua | 16 ++++++++-------- mods/ITEMS/mcl_potions/splash.lua | 8 ++++---- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 9113721211..e782b43e86 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -367,11 +367,11 @@ for i, potion in ipairs(potions) do lingering_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_lingering" end -splash_table["mcl_potions:water"] = "mcl_potions:water_splash" -splash_table["mcl_potions:river_water"] = "mcl_potions:river_water_splash" +for i, potion in ipairs({"awkward", "mundane", "thick", "water", "river_water"}) do + splash_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_splash" + lingering_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_lingering" +end -lingering_table["mcl_potions:water_splash"] = "mcl_potions:lingering" -lingering_table["mcl_potions:river_water_splash"] = "mcl_potions:lingering" local mod_table = { ["mesecons:wire_00000000_off"] = extension_table, diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index cb48464e04..053601d41d 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -41,19 +41,19 @@ local function register_lingering(name, descr, color, def) if n ~= "air" then minetest.sound_play("mcl_potions_breaking_glass") minetest.add_particlespawner({ - amount = 100, + amount = 1000, time = 30, - minpos = {x=pos.x-d, y=pos.y, z=pos.z-d}, - maxpos = {x=pos.x+d, y=pos.y+1, z=pos.z+d}, + minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d}, + maxpos = {x=pos.x+d, y=pos.y+d, z=pos.z+d}, minvel = {x=-0.5, y=0, z=-0.5}, maxvel = {x=0.5, y=0.5, z=0.5}, - minacc = {x=-0.25, y=0, z=-0.25}, - maxacc = {x=0.25, y=.1, z=0.25}, + minacc = {x=-0.2, y=0, z=-0.2}, + maxacc = {x=0.2, y=.05, z=0.2}, minexptime = 1, maxexptime = 5, minsize = 2, maxsize = 4, - collisiondetection = false, + collisiondetection = true, vertical = false, texture = "mcl_potions_sprite.png^[colorize:"..color..":127", }) @@ -74,11 +74,11 @@ local function register_lingering(name, descr, color, def) }) end -register_lingering("water", "Lingering Water", "#0000FF", { +register_lingering("water", "Lingering Potion", "#0000FF", { potion_fun = function(player, redx) end, }) -register_lingering("river_water", "Lingering River Water", "#0000FF", { +register_lingering("river_water", "Lingering Potion", "#0000FF", { potion_fun = function(player, redx) end, }) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 104f5f51d6..e4576f0bcb 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -41,10 +41,10 @@ local function register_splash(name, descr, color, def) if n ~= "air" then minetest.sound_play("mcl_potions_breaking_glass") minetest.add_particlespawner({ - amount = 40, + amount = 50, time = 2, - minpos = {x=pos.x-d, y=pos.y, z=pos.z-d}, - maxpos = {x=pos.x+d, y=pos.y+1, z=pos.z+d}, + minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d}, + maxpos = {x=pos.x+d, y=pos.y+d, z=pos.z+d}, minvel = {x=-1, y=0, z=-1}, maxvel = {x=1, y=0.5, z=1}, minacc = {x=-0.5, y=0, z=-0.5}, @@ -53,7 +53,7 @@ local function register_splash(name, descr, color, def) maxexptime = 5, minsize = 2, maxsize = 4, - collisiondetection = false, + collisiondetection = true, vertical = false, texture = "mcl_potions_sprite.png^[colorize:"..color..":127", }) From 4b23c2a15c95cfe4147b713518409d0609092af0 Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 18 Jun 2020 16:56:19 -0400 Subject: [PATCH 039/108] Update potions for mob effects. Healing harms zombies, harming heals zombies. --- mods/ITEMS/mcl_potions/functions.lua | 14 +++++++++++++- mods/ITEMS/mcl_potions/init.lua | 2 +- mods/ITEMS/mcl_potions/lingering.lua | 2 +- mods/ITEMS/mcl_potions/potions.lua | 1 + mods/ITEMS/mcl_potions/splash.lua | 6 +++--- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 886502cfbd..410717d086 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -31,7 +31,19 @@ function mcl_potions._use_potion(item) minetest.sound_play("mcl_potions_drinking") end -function mcl_potions.healing_func(player, hp) player:set_hp(player:get_hp() + hp) end +local is_zombie = {} + +for i, zombie in ipairs({"husk","zombie","pigman"}) do + is_zombie["mobs_mc:"..zombie] = true + is_zombie["mobs_mc:baby_"..zombie] = true +end + +function mcl_potions.healing_func(player, hp) + + if is_zombie[player:get_entity_name()] then hp = -hp end + player:set_hp(player:get_hp() + hp) + +end function mcl_potions.swiftness_func(player, factor, duration) playerphysics.add_physics_factor(player, "speed", "swiftness", factor) diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index e782b43e86..2e31316c65 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -7,7 +7,7 @@ dofile(modpath .. "/splash.lua") dofile(modpath .. "/lingering.lua") dofile(modpath .. "/potions.lua") -local brewhelp = S("Put this item in an item frame for decoration. It's useless otherwise.") +local brewhelp = S("Try different combinations to create potions.") minetest.register_craftitem("mcl_potions:fermented_spider_eye", { description = S("Fermented Spider Eye"), diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 053601d41d..383f6e22e6 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -60,7 +60,7 @@ local function register_lingering(name, descr, color, def) self.object:remove() for i, obj in ipairs(minetest.get_objects_inside_radius(pos, 4)) do - if minetest.is_player(obj) then + if minetest.is_player(obj) or obj:get_entity_name() then pos2 = obj:get_pos() local rad = math.floor(math.sqrt((pos2.x-pos.x)^2 + (pos2.y-pos.y)^2 + (pos2.z-pos.z)^2)) diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index 32ddb37807..bdae4326cb 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -1,4 +1,5 @@ local S = minetest.get_translator("mcl_potions") +local brewhelp = S("Try different combinations to create potions.") local potion_image = function(colorstring, opacity) if not opacity then diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index e4576f0bcb..4543386f93 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -60,7 +60,7 @@ local function register_splash(name, descr, color, def) self.object:remove() for i, obj in ipairs(minetest.get_objects_inside_radius(pos, 4)) do - if minetest.is_player(obj) then + if minetest.is_player(obj) or obj:get_entity_name() then pos2 = obj:get_pos() local rad = math.floor(math.sqrt((pos2.x-pos.x)^2 + (pos2.y-pos.y)^2 + (pos2.z-pos.z)^2)) @@ -95,11 +95,11 @@ register_splash("thick", "Splash Thick Potion", "#0000FF", { }) register_splash("healing", "Splash Healing", "#AA0000", { - potion_fun = function(player, redx) player:set_hp(player:get_hp() + 3*redx) end, + potion_fun = function(player, redx) mcl_potions.healing_func(player, 3*redx) end, }) register_splash("healing_2", "Splash Healing II", "#DD0000", { - potion_fun = function(player, redx) player:set_hp(player:get_hp() + 6*redx) end, + potion_fun = function(player, redx) mcl_potions.healing_func(player, 6*redx) end, }) register_splash("harming", "Splash Harming", "#660099", { From 58cde1c9e91d8d51e4224f6c7dd48fead0a4ea86 Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 18 Jun 2020 17:17:56 -0400 Subject: [PATCH 040/108] Correct super zombie. --- mods/ITEMS/mcl_potions/functions.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 410717d086..56833faf7f 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -39,9 +39,13 @@ for i, zombie in ipairs({"husk","zombie","pigman"}) do end function mcl_potions.healing_func(player, hp) - + if is_zombie[player:get_entity_name()] then hp = -hp end - player:set_hp(player:get_hp() + hp) + if hp > 0 then + player:set_hp(math.min(player:get_hp() + hp, player:get_properties().hp_max)) + else + player:set_hp(player:get_hp() + hp) + end end From d9e78e8ad902129429e3dc6c74084a4841dd7863 Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 18 Jun 2020 17:59:36 -0400 Subject: [PATCH 041/108] Add water breathing. --- mods/ITEMS/mcl_potions/functions.lua | 10 +++++++ mods/ITEMS/mcl_potions/init.lua | 6 ++-- mods/ITEMS/mcl_potions/potions.lua | 43 ++++++++++++++++++++++++++++ mods/ITEMS/mcl_potions/splash.lua | 10 ++++++- 4 files changed, 65 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 56833faf7f..d66e49d58e 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -81,3 +81,13 @@ function mcl_potions.invisiblility_func(player, duration) mcl_potions.invisible(player, true) minetest.after(duration, function() mcl_potions.invisible(player, false) end ) end + +function mcl_potions.water_breathing_func(player, duration) + if minetest.is_player(player) then + + for i=1,math.floor(duration) do + minetest.after(i, function() player:set_breath(10) end ) + end + end + +end diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 2e31316c65..46d4eb464f 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -303,7 +303,7 @@ local awkward_table = { ["mcl_fishing:pufferfish_raw"] = "mcl_potions:water_breathing", --add craft ["mcl_mobitems:ghast_tear"] = "mcl_potions:regeneration", --add craft ["mcl_mobitems:spider_eye"] = "mcl_potions:poison", --add craft - ["mcl_mobitems:rabbit_foot"] = "mcl_potions:leaping", --add craft + ["mcl_mobitems:rabbit_foot"] = "mcl_potions:leaping", } local output_table = { @@ -316,11 +316,11 @@ local output_table = { local enhancement_table = {} local extension_table = {} local potions = {"awkward", "mundane", "thick"} -for i, potion in ipairs({"healing","harming","swiftness","leaping","poison","regeneration","invisibility","weakness"}) do +for i, potion in ipairs({"healing","harming","swiftness","leaping","poison","regeneration","invisibility","weakness","water_breathing"}) do table.insert(potions, potion) - if potion ~= "invisibility" and potion ~= "night_vision" and potion ~= "weakness" then + if potion ~= "invisibility" and potion ~= "night_vision" and potion ~= "weakness" and potion ~= "water_breathing" then enhancement_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_2" enhancement_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_2_splash" table.insert(potions, potion.."_2") diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index bdae4326cb..b39a185919 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -548,3 +548,46 @@ minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing) print("Weakness Active") end end) + + +minetest.register_craftitem("mcl_potions:water_breathing", { + description = S("Water Breathing Potion"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#0000AA"), + inventory_image = potion_image("#0000AA"), + groups = { brewitem = 1, food = 0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.water_breathing_func(user, 180) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.water_breathing_func(user, 180) + mcl_potions._use_potion(itemstack) + return itemstack + end +}) + +minetest.register_craftitem("mcl_potions:water_breathing_plus", { + description = S("Water Breathing Potion +"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#0000CC"), + inventory_image = potion_image("#0000CC"), + groups = { brewitem = 1, food = 0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.water_breathing_func(user, 480) + mcl_potions._use_potion(itemstack) + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.water_breathing_func(user, 480) + mcl_potions._use_potion(itemstack) + return itemstack + end +}) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 4543386f93..ce39e795eb 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -171,7 +171,7 @@ register_splash("invisibility", "Splash Invisibility", "#B0B0B0", { }) register_splash("invisibility_plus", "Splash Invisibility +", "#A0A0A0", { - potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 300*redx) end + potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 360*redx) end }) register_splash("weakness", "Splash Weakness", "#6600AA", { @@ -181,3 +181,11 @@ register_splash("weakness", "Splash Weakness", "#6600AA", { register_splash("weakness_plus", "Splash Weakness +", "#7700BB", { potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.4, 180*redx) end }) + +register_splash("water_breathing", "Splash Water Breathing", "#0000AA", { + potion_fun = function(player, redx) mcl_potions.water_breathing_func(player, 135*redx) end +}) + +register_splash("water_breathing_plus", "Splash Water Breathing +", "#0000CC", { + potion_fun = function(player, redx) mcl_potions.water_breathing_func(player, 360*redx) end +}) From 3ab5035312bbd05138c98fafd64fb8d64bace936 Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 18 Jun 2020 18:14:51 -0400 Subject: [PATCH 042/108] Add regeneration --- mods/ITEMS/mcl_potions/functions.lua | 19 +++++++++++++++---- mods/ITEMS/mcl_potions/potions.lua | 4 ++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index d66e49d58e..918156bb4e 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -72,9 +72,16 @@ function mcl_potions.poison_func(player, factor, duration) end function mcl_potions.regeneration_func(player, factor, duration) - player:set_attribute("regeneration", tostring(factor)) - print(player:get_player_name().." ".."regeneration = "..player:get_attribute("regeneration")) - minetest.after(duration, function() player:set_attribute("regeneration", tostring(0)) end ) + if minetest.is_player(player) then + + for i=1,math.floor(duration/factor) do + minetest.after(i*factor, function() + if player:get_hp() < 20 then + player:set_hp(player:get_hp() + 0.5) + end + end ) + end + end end function mcl_potions.invisiblility_func(player, duration) @@ -86,7 +93,11 @@ function mcl_potions.water_breathing_func(player, duration) if minetest.is_player(player) then for i=1,math.floor(duration) do - minetest.after(i, function() player:set_breath(10) end ) + minetest.after(i, function() + if player:get_breath() < 10 then + player:set_breath(10) + end + end ) end end diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index b39a185919..cb03521981 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -466,13 +466,13 @@ minetest.register_craftitem("mcl_potions:regeneration_2", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 1.2, 21) + mcl_potions.regeneration_func(user, 1.2, 22) mcl_potions._use_potion(itemstack) return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 1.2, 21) + mcl_potions.regeneration_func(user, 1.2, 22) mcl_potions._use_potion(itemstack) return itemstack end From 38a4e6ed89909f7acd03a3cfd562aa58b350721c Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 18 Jun 2020 19:44:29 -0400 Subject: [PATCH 043/108] Correct regeneration amount - 1/2 heart per cycle --- mods/ITEMS/mcl_potions/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 918156bb4e..282e53e841 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -77,7 +77,7 @@ function mcl_potions.regeneration_func(player, factor, duration) for i=1,math.floor(duration/factor) do minetest.after(i*factor, function() if player:get_hp() < 20 then - player:set_hp(player:get_hp() + 0.5) + player:set_hp(player:get_hp() + 1) end end ) end From 7dc36368b0992e0b67cc96e96164f2fe5c1cabc6 Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 18 Jun 2020 20:08:00 -0400 Subject: [PATCH 044/108] Add poison. Update times/potency. --- mods/ITEMS/mcl_potions/functions.lua | 30 ++++++++++++++-------------- mods/ITEMS/mcl_potions/lingering.lua | 12 +++++------ mods/ITEMS/mcl_potions/splash.lua | 12 +++++------ 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 282e53e841..06a75d1752 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -65,25 +65,25 @@ function mcl_potions.weakness_func(player, factor, duration) minetest.after(duration, function() player:set_attribute("weakness", tostring(0)) end ) end + function mcl_potions.poison_func(player, factor, duration) - player:set_attribute("poison", tostring(factor)) - print(player:get_player_name().." ".."poison = "..player:get_attribute("poison")) - minetest.after(duration, function() player:set_attribute("poison", tostring(0)) end ) -end - -function mcl_potions.regeneration_func(player, factor, duration) - if minetest.is_player(player) then - - for i=1,math.floor(duration/factor) do - minetest.after(i*factor, function() - if player:get_hp() < 20 then - player:set_hp(player:get_hp() + 1) - end - end ) - end + for i=1,math.floor(duration/factor) do + minetest.after(i*factor, function() player:set_hp(player:get_hp() - 1) end) end end + +function mcl_potions.regeneration_func(player, factor, duration) + for i=1,math.floor(duration/factor) do + minetest.after(i*factor, function() + if player:get_hp() < 20 then + player:set_hp(player:get_hp() + 1) + end + end ) + end +end + + function mcl_potions.invisiblility_func(player, duration) mcl_potions.invisible(player, true) minetest.after(duration, function() mcl_potions.invisible(player, false) end ) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 383f6e22e6..158e7a34db 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -143,27 +143,27 @@ register_lingering("slowness_plus", "Lingering Slowness +", "#000066", { }) register_lingering("poison", "Lingering Poison", "#335544", { - potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 2.5, 45*redx) end }) register_lingering("poison_2", "Lingering Poison II", "#446655", { - potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 1.2, 21*redx) end }) register_lingering("poison_plus", "Lingering Poison +", "#557766", { - potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 2.5, 90*redx) end }) register_lingering("regeneration", "Lingering Regeneration", "#A52BB2", { - potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 180*redx) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 2.5, 45*redx) end }) register_lingering("regeneration_2", "Lingering Regeneration II", "#B52CC2", { - potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 180*redx) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 1.2, 21*redx) end }) register_lingering("regeneration_plus", "Lingering Regeneration +", "#C53DD3", { - potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 300*redx) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 2.5, 90*redx) end }) register_lingering("invisibility", "Lingering Invisibility", "#B0B0B0", { diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index ce39e795eb..886f2b0200 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -143,27 +143,27 @@ register_splash("slowness_plus", "Splash Slowness +", "#000066", { }) register_splash("poison", "Splash Poison", "#335544", { - potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 2.5, 45*redx) end }) register_splash("poison_2", "Splash Poison II", "#446655", { - potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 1.2, 21*redx) end }) register_splash("poison_plus", "Splash Poison +", "#557766", { - potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 2.5, 90*redx) end }) register_splash("regeneration", "Splash Regeneration", "#A52BB2", { - potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 180*redx) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 2.5, 45*redx) end }) register_splash("regeneration_2", "Splash Regeneration II", "#B52CC2", { - potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 180*redx) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 1.2, 21*redx) end }) register_splash("regeneration_plus", "Splash Regeneration +", "#C53DD3", { - potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 300*redx) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 2.5, 90*redx) end }) register_splash("invisibility", "Splash Invisibility", "#B0B0B0", { From 70fd9db0c351b18255d07b341e29016d045837a6 Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 18 Jun 2020 20:22:44 -0400 Subject: [PATCH 045/108] Fix crash with non-player objects when adding player_physics attributes to object. --- 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 06a75d1752..dfcacefb73 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -50,29 +50,29 @@ function mcl_potions.healing_func(player, hp) end function mcl_potions.swiftness_func(player, factor, duration) + if not player:get_meta() then return false end playerphysics.add_physics_factor(player, "speed", "swiftness", factor) minetest.after(duration, function() playerphysics.remove_physics_factor(player, "speed", "swiftness") end ) end function mcl_potions.leaping_func(player, factor, duration) + if player:get_meta() then return false end playerphysics.add_physics_factor(player, "jump", "leaping", factor) minetest.after(duration, function() playerphysics.remove_physics_factor(player, "jump", "leaping") end ) end function mcl_potions.weakness_func(player, factor, duration) player:set_attribute("weakness", tostring(factor)) - print(player:get_player_name().." ".."weakness = "..player:get_attribute("weakness")) + -- print(player:get_player_name().." ".."weakness = "..player:get_attribute("weakness")) minetest.after(duration, function() player:set_attribute("weakness", tostring(0)) end ) end - function mcl_potions.poison_func(player, factor, duration) for i=1,math.floor(duration/factor) do minetest.after(i*factor, function() player:set_hp(player:get_hp() - 1) end) end end - function mcl_potions.regeneration_func(player, factor, duration) for i=1,math.floor(duration/factor) do minetest.after(i*factor, function() From bd9fd780eb5025e4f20f7c18f091a92916baba43 Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 18 Jun 2020 21:04:31 -0400 Subject: [PATCH 046/108] Add potion sprite effects when drinking --- mods/ITEMS/mcl_potions/functions.lua | 20 +++++- mods/ITEMS/mcl_potions/potions.lua | 98 ++++++++++++++-------------- mods/ITEMS/mcl_potions/splash.lua | 7 +- 3 files changed, 71 insertions(+), 54 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index dfcacefb73..8ae3e1118b 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -26,9 +26,27 @@ function mcl_potions.invisible(player, toggle) end -function mcl_potions._use_potion(item) +function mcl_potions._use_potion(item, pos, color) + local d = 0.1 item:replace("mcl_potions:glass_bottle") minetest.sound_play("mcl_potions_drinking") + minetest.add_particlespawner({ + amount = 25, + time = 1, + minpos = {x=pos.x-d, y=pos.y+1, z=pos.z-d}, + maxpos = {x=pos.x+d, y=pos.y+2, z=pos.z+d}, + minvel = {x=-0.1, y=0, z=-0.1}, + maxvel = {x=0.1, y=0.1, z=0.1}, + minacc = {x=-0.1, y=0, z=-0.1}, + maxacc = {x=0.1, y=.1, z=0.1}, + minexptime = 1, + maxexptime = 5, + minsize = 0.5, + maxsize = 2, + collisiondetection = true, + vertical = false, + texture = "mcl_potions_sprite.png^[colorize:"..color..":127", + }) end local is_zombie = {} diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index cb03521981..2eacc0f6ee 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -23,6 +23,7 @@ minetest.register_craftitem("mcl_potions:awkward", { on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"), on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), }) + minetest.register_craftitem("mcl_potions:mundane", { description = S("Mundane Potion"), _tt_help = S("No effect"), @@ -37,7 +38,6 @@ minetest.register_craftitem("mcl_potions:mundane", { on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), }) - minetest.register_craftitem("mcl_potions:thick", { description = S("Thick Potion"), _tt_help = S("No effect"), @@ -73,13 +73,13 @@ minetest.register_craftitem("mcl_potions:healing", { on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 4) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#CC0000") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 4) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#CC0000") return itemstack end, }) @@ -94,13 +94,13 @@ minetest.register_craftitem("mcl_potions:healing_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 8) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#DD0000") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 8) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#DD0000") return itemstack end, @@ -116,13 +116,13 @@ minetest.register_craftitem("mcl_potions:harming", { on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -6) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#660099") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -6) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#660099") return itemstack end, }) @@ -137,13 +137,13 @@ minetest.register_craftitem("mcl_potions:harming_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -12) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#330066") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -12) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#330066") return itemstack end, }) @@ -169,13 +169,13 @@ minetest.register_craftitem("mcl_potions:swiftness", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 180) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#009999") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 180) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#009999") return itemstack end, }) @@ -190,13 +190,13 @@ minetest.register_craftitem("mcl_potions:swiftness_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.4, 90) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#00BBBB") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.4, 90) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#00BBBB") return itemstack end, }) @@ -211,13 +211,13 @@ minetest.register_craftitem("mcl_potions:swiftness_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 480) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#00AAAA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 480) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#00AAAA") return itemstack end, }) @@ -232,13 +232,13 @@ minetest.register_craftitem("mcl_potions:slowness", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 90) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#000080") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 90) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#000080") return itemstack end, }) @@ -253,13 +253,13 @@ minetest.register_craftitem("mcl_potions:slowness_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 240) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#000066") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 240) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#000066") return itemstack end, }) @@ -275,13 +275,13 @@ minetest.register_craftitem("mcl_potions:leaping", { on_place = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 180) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#00CC33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 180) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#00CC33") return itemstack end, }) @@ -296,13 +296,13 @@ minetest.register_craftitem("mcl_potions:leaping_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.4, 90) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#00EE33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.4, 90) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#00EE33") return itemstack end, }) @@ -317,13 +317,13 @@ minetest.register_craftitem("mcl_potions:leaping_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 480) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#00DD33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 480) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#00DD33") return itemstack end, }) @@ -339,13 +339,13 @@ minetest.register_craftitem("mcl_potions:weakness", { on_place = function(itemstack, user, pointed_thing) mcl_potions.weakness_func(user, 1.2, 90) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#6600AA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.weakness_func(user, 1.2, 90) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#6600AA") return itemstack end }) @@ -360,13 +360,13 @@ minetest.register_craftitem("mcl_potions:weakness_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.weakness_func(user, 1.4, 240) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#7700BB") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.weakness_func(user, 1.4, 240) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#7700BB") return itemstack end }) @@ -382,13 +382,13 @@ minetest.register_craftitem("mcl_potions:poison", { on_place = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 45) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#225533") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 45) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#225533") return itemstack end }) @@ -403,13 +403,13 @@ minetest.register_craftitem("mcl_potions:poison_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 1.2, 21) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#447755") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 1.2, 21) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#447755") return itemstack end }) @@ -424,13 +424,13 @@ minetest.register_craftitem("mcl_potions:poison_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 90) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#336644") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 90) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#336644") return itemstack end }) @@ -446,13 +446,13 @@ minetest.register_craftitem("mcl_potions:regeneration", { on_place = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 45) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#A52BB2") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 45) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#A52BB2") return itemstack end }) @@ -467,13 +467,13 @@ minetest.register_craftitem("mcl_potions:regeneration_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 1.2, 22) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#B52CC2") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 1.2, 22) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#B52CC2") return itemstack end }) @@ -488,13 +488,13 @@ minetest.register_craftitem("mcl_potions:regeneration_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 90) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#C53DD3") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 90) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#C53DD3") return itemstack end }) @@ -510,13 +510,13 @@ minetest.register_craftitem("mcl_potions:invisibility", { on_place = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 180) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#B0B0B0") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 180) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#B0B0B0") return itemstack end }) @@ -531,13 +531,13 @@ minetest.register_craftitem("mcl_potions:invisibility_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 480) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#A0A0A0") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 480) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#A0A0A0") return itemstack end }) @@ -560,13 +560,13 @@ minetest.register_craftitem("mcl_potions:water_breathing", { on_place = function(itemstack, user, pointed_thing) mcl_potions.water_breathing_func(user, 180) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#0000AA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.water_breathing_func(user, 180) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#0000AA") return itemstack end }) @@ -581,13 +581,13 @@ minetest.register_craftitem("mcl_potions:water_breathing_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.water_breathing_func(user, 480) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#0000CC") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.water_breathing_func(user, 480) - mcl_potions._use_potion(itemstack) + mcl_potions._use_potion(itemstack, user:get_pos(), "#0000CC") return itemstack end }) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 886f2b0200..a340b0a301 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -12,13 +12,12 @@ local function register_splash(name, descr, color, def) description = descr, inventory_image = splash_image(color), on_use = function(item, placer, pointed_thing) - --weapons_shot(itemstack, placer, pointed_thing, def.velocity, name) local velocity = 10 local dir = placer:get_look_dir(); - local pos = placer:getpos(); + local pos = placer:get_pos(); local obj = minetest.env:add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying") - obj:setvelocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity}) - obj:setacceleration({x=0, y=-9.8, z=0}) + obj:set_velocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity}) + obj:set_acceleration({x=0, y=-9.8, z=0}) item:take_item() return item end, From a5e3b259fae403ca543224778728528f6d36ff18 Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 19 Jun 2020 20:22:32 -0400 Subject: [PATCH 047/108] Keep poisons from killing the player and prevent compounding poison effects. --- mods/ITEMS/mcl_potions/functions.lua | 31 ++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 8ae3e1118b..667eb99561 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -1,13 +1,19 @@ local invisibility = {} +local poisoned = {} --- reset player invisibility if they go offline +-- reset player invisibility/poison if they go offline minetest.register_on_leaveplayer(function(player) local name = player:get_player_name() + if invisibility[name] then invisibility[name] = nil end + if poisoned[name] then + poisoned[name] = nil + end + end) function mcl_potions.invisible(player, toggle) @@ -26,6 +32,13 @@ function mcl_potions.invisible(player, toggle) end +function mcl_potions.poison(player, toggle) + + if not player then return false end + poisoned[player:get_player_name()] = toggle + +end + function mcl_potions._use_potion(item, pos, color) local d = 0.1 item:replace("mcl_potions:glass_bottle") @@ -59,10 +72,11 @@ end function mcl_potions.healing_func(player, hp) if is_zombie[player:get_entity_name()] then hp = -hp end + if hp > 0 then player:set_hp(math.min(player:get_hp() + hp, player:get_properties().hp_max)) else - player:set_hp(player:get_hp() + hp) + player:set_hp(math.max(player:get_hp() + hp, 1)) end end @@ -86,8 +100,17 @@ function mcl_potions.weakness_func(player, factor, duration) end function mcl_potions.poison_func(player, factor, duration) - for i=1,math.floor(duration/factor) do - minetest.after(i*factor, function() player:set_hp(player:get_hp() - 1) end) + + if not poisoned[player:get_player_name()] then + mcl_potions.poison(player, true) + for i=1,math.floor(duration/factor) do + minetest.after(i*factor, function() + if poisoned[player:get_player_name()] then + player:set_hp(math.max(player:get_hp() - 1,1)) + end + end) + end + minetest.after(duration, function() mcl_potions.poison(player, false) end) end end From d929ca19a8f655acabd378302cb2bcaf9905a51e Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 20 Jun 2020 09:00:53 -0400 Subject: [PATCH 048/108] Add persistent particle spawner. --- mods/ITEMS/mcl_potions/functions.lua | 81 ++++++++++++++++++----- mods/ITEMS/mcl_potions/lingering.lua | 2 +- mods/ITEMS/mcl_potions/potions.lua | 96 ++++++++++++++-------------- mods/ITEMS/mcl_potions/splash.lua | 2 +- 4 files changed, 114 insertions(+), 67 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 667eb99561..9cdd3c2a66 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -39,29 +39,54 @@ function mcl_potions.poison(player, toggle) end -function mcl_potions._use_potion(item, pos, color) +function mcl_potions._use_potion(item, obj, color) local d = 0.1 + local pos = obj:get_pos() item:replace("mcl_potions:glass_bottle") minetest.sound_play("mcl_potions_drinking") minetest.add_particlespawner({ - amount = 25, - time = 1, - minpos = {x=pos.x-d, y=pos.y+1, z=pos.z-d}, - maxpos = {x=pos.x+d, y=pos.y+2, z=pos.z+d}, - minvel = {x=-0.1, y=0, z=-0.1}, - maxvel = {x=0.1, y=0.1, z=0.1}, - minacc = {x=-0.1, y=0, z=-0.1}, - maxacc = {x=0.1, y=.1, z=0.1}, - minexptime = 1, - maxexptime = 5, - minsize = 0.5, - maxsize = 2, - collisiondetection = true, - vertical = false, - texture = "mcl_potions_sprite.png^[colorize:"..color..":127", - }) + amount = 25, + time = 1, + minpos = {x=pos.x-d, y=pos.y+1, z=pos.z-d}, + maxpos = {x=pos.x+d, y=pos.y+2, z=pos.z+d}, + minvel = {x=-0.1, y=0, z=-0.1}, + maxvel = {x=0.1, y=0.1, z=0.1}, + minacc = {x=-0.1, y=0, z=-0.1}, + maxacc = {x=0.1, y=.1, z=0.1}, + minexptime = 1, + maxexptime = 5, + minsize = 0.5, + maxsize = 1, + collisiondetection = true, + vertical = false, + texture = "mcl_potions_sprite.png^[colorize:"..color..":127", + }) end + +function mcl_potions._add_spawner(obj, color) + local d = 0.2 + local pos = obj:get_pos() + minetest.add_particlespawner({ + amount = 5, + time = 1, + minpos = {x=pos.x-d, y=pos.y+1, z=pos.z-d}, + maxpos = {x=pos.x+d, y=pos.y+2, z=pos.z+d}, + minvel = {x=-0.1, y=0, z=-0.1}, + maxvel = {x=0.1, y=0.1, z=0.1}, + minacc = {x=-0.1, y=0, z=-0.1}, + maxacc = {x=0.1, y=.1, z=0.1}, + minexptime = 0.5, + maxexptime = 1, + minsize = 0.5, + maxsize = 1, + collisiondetection = false, + vertical = false, + texture = "mcl_potions_sprite.png^[colorize:"..color..":127", + }) +end + + local is_zombie = {} for i, zombie in ipairs({"husk","zombie","pigman"}) do @@ -85,18 +110,27 @@ function mcl_potions.swiftness_func(player, factor, duration) if not player:get_meta() then return false end playerphysics.add_physics_factor(player, "speed", "swiftness", factor) minetest.after(duration, function() playerphysics.remove_physics_factor(player, "speed", "swiftness") end ) + for i=1,math.floor(duration) do + minetest.after(i, function() mcl_potions._add_spawner(player, "#009999") end) + end end function mcl_potions.leaping_func(player, factor, duration) if player:get_meta() then return false end playerphysics.add_physics_factor(player, "jump", "leaping", factor) minetest.after(duration, function() playerphysics.remove_physics_factor(player, "jump", "leaping") end ) + for i=1,math.floor(duration) do + minetest.after(i, function() mcl_potions._add_spawner(player, "#00CC33") end) + end end function mcl_potions.weakness_func(player, factor, duration) player:set_attribute("weakness", tostring(factor)) -- print(player:get_player_name().." ".."weakness = "..player:get_attribute("weakness")) minetest.after(duration, function() player:set_attribute("weakness", tostring(0)) end ) + for i=1,math.floor(duration) do + minetest.after(i, function() mcl_potions._add_spawner(player, "#6600AA") end) + end end function mcl_potions.poison_func(player, factor, duration) @@ -110,6 +144,9 @@ function mcl_potions.poison_func(player, factor, duration) end end) end + for i=1,math.floor(duration) do + minetest.after(i, function() mcl_potions._add_spawner(player, "#225533") end) + end minetest.after(duration, function() mcl_potions.poison(player, false) end) end end @@ -122,12 +159,20 @@ function mcl_potions.regeneration_func(player, factor, duration) end end ) end + for i=1,math.floor(duration) do + minetest.after(i, function() mcl_potions._add_spawner(player, "#A52BB2") end) + end end function mcl_potions.invisiblility_func(player, duration) mcl_potions.invisible(player, true) minetest.after(duration, function() mcl_potions.invisible(player, false) end ) + + for i=1,math.floor(duration) do + minetest.after(i, function() mcl_potions._add_spawner(player, "#B0B0B0") end) + end + end function mcl_potions.water_breathing_func(player, duration) @@ -138,8 +183,10 @@ function mcl_potions.water_breathing_func(player, duration) if player:get_breath() < 10 then player:set_breath(10) end + mcl_potions._add_spawner(player, "#0000AA") end ) end + end end diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 158e7a34db..04a1ff54a4 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -50,7 +50,7 @@ local function register_lingering(name, descr, color, def) minacc = {x=-0.2, y=0, z=-0.2}, maxacc = {x=0.2, y=.05, z=0.2}, minexptime = 1, - maxexptime = 5, + maxexptime = 2, minsize = 2, maxsize = 4, collisiondetection = true, diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index 2eacc0f6ee..84324f2135 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -73,13 +73,13 @@ minetest.register_craftitem("mcl_potions:healing", { on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 4) - mcl_potions._use_potion(itemstack, user:get_pos(), "#CC0000") + mcl_potions._use_potion(itemstack, user, "#CC0000") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 4) - mcl_potions._use_potion(itemstack, user:get_pos(), "#CC0000") + mcl_potions._use_potion(itemstack, user, "#CC0000") return itemstack end, }) @@ -94,13 +94,13 @@ minetest.register_craftitem("mcl_potions:healing_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 8) - mcl_potions._use_potion(itemstack, user:get_pos(), "#DD0000") + mcl_potions._use_potion(itemstack, user, "#DD0000") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 8) - mcl_potions._use_potion(itemstack, user:get_pos(), "#DD0000") + mcl_potions._use_potion(itemstack, user, "#DD0000") return itemstack end, @@ -116,13 +116,13 @@ minetest.register_craftitem("mcl_potions:harming", { on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -6) - mcl_potions._use_potion(itemstack, user:get_pos(), "#660099") + mcl_potions._use_potion(itemstack, user, "#660099") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -6) - mcl_potions._use_potion(itemstack, user:get_pos(), "#660099") + mcl_potions._use_potion(itemstack, user, "#660099") return itemstack end, }) @@ -137,13 +137,13 @@ minetest.register_craftitem("mcl_potions:harming_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -12) - mcl_potions._use_potion(itemstack, user:get_pos(), "#330066") + mcl_potions._use_potion(itemstack, user, "#330066") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -12) - mcl_potions._use_potion(itemstack, user:get_pos(), "#330066") + mcl_potions._use_potion(itemstack, user, "#330066") return itemstack end, }) @@ -169,13 +169,13 @@ minetest.register_craftitem("mcl_potions:swiftness", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 180) - mcl_potions._use_potion(itemstack, user:get_pos(), "#009999") + mcl_potions._use_potion(itemstack, user, "#009999") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 180) - mcl_potions._use_potion(itemstack, user:get_pos(), "#009999") + mcl_potions._use_potion(itemstack, user, "#009999") return itemstack end, }) @@ -190,13 +190,13 @@ minetest.register_craftitem("mcl_potions:swiftness_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.4, 90) - mcl_potions._use_potion(itemstack, user:get_pos(), "#00BBBB") + mcl_potions._use_potion(itemstack, user, "#00BBBB") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.4, 90) - mcl_potions._use_potion(itemstack, user:get_pos(), "#00BBBB") + mcl_potions._use_potion(itemstack, user, "#00BBBB") return itemstack end, }) @@ -211,13 +211,13 @@ minetest.register_craftitem("mcl_potions:swiftness_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 480) - mcl_potions._use_potion(itemstack, user:get_pos(), "#00AAAA") + mcl_potions._use_potion(itemstack, user, "#00AAAA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 480) - mcl_potions._use_potion(itemstack, user:get_pos(), "#00AAAA") + mcl_potions._use_potion(itemstack, user, "#00AAAA") return itemstack end, }) @@ -232,13 +232,13 @@ minetest.register_craftitem("mcl_potions:slowness", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 90) - mcl_potions._use_potion(itemstack, user:get_pos(), "#000080") + mcl_potions._use_potion(itemstack, user, "#000080") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 90) - mcl_potions._use_potion(itemstack, user:get_pos(), "#000080") + mcl_potions._use_potion(itemstack, user, "#000080") return itemstack end, }) @@ -253,13 +253,13 @@ minetest.register_craftitem("mcl_potions:slowness_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 240) - mcl_potions._use_potion(itemstack, user:get_pos(), "#000066") + mcl_potions._use_potion(itemstack, user, "#000066") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 240) - mcl_potions._use_potion(itemstack, user:get_pos(), "#000066") + mcl_potions._use_potion(itemstack, user, "#000066") return itemstack end, }) @@ -275,13 +275,13 @@ minetest.register_craftitem("mcl_potions:leaping", { on_place = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 180) - mcl_potions._use_potion(itemstack, user:get_pos(), "#00CC33") + mcl_potions._use_potion(itemstack, user, "#00CC33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 180) - mcl_potions._use_potion(itemstack, user:get_pos(), "#00CC33") + mcl_potions._use_potion(itemstack, user, "#00CC33") return itemstack end, }) @@ -296,13 +296,13 @@ minetest.register_craftitem("mcl_potions:leaping_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.4, 90) - mcl_potions._use_potion(itemstack, user:get_pos(), "#00EE33") + mcl_potions._use_potion(itemstack, user, "#00EE33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.4, 90) - mcl_potions._use_potion(itemstack, user:get_pos(), "#00EE33") + mcl_potions._use_potion(itemstack, user, "#00EE33") return itemstack end, }) @@ -317,13 +317,13 @@ minetest.register_craftitem("mcl_potions:leaping_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 480) - mcl_potions._use_potion(itemstack, user:get_pos(), "#00DD33") + mcl_potions._use_potion(itemstack, user, "#00DD33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 480) - mcl_potions._use_potion(itemstack, user:get_pos(), "#00DD33") + mcl_potions._use_potion(itemstack, user, "#00DD33") return itemstack end, }) @@ -339,13 +339,13 @@ minetest.register_craftitem("mcl_potions:weakness", { on_place = function(itemstack, user, pointed_thing) mcl_potions.weakness_func(user, 1.2, 90) - mcl_potions._use_potion(itemstack, user:get_pos(), "#6600AA") + mcl_potions._use_potion(itemstack, user, "#6600AA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.weakness_func(user, 1.2, 90) - mcl_potions._use_potion(itemstack, user:get_pos(), "#6600AA") + mcl_potions._use_potion(itemstack, user, "#6600AA") return itemstack end }) @@ -360,13 +360,13 @@ minetest.register_craftitem("mcl_potions:weakness_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.weakness_func(user, 1.4, 240) - mcl_potions._use_potion(itemstack, user:get_pos(), "#7700BB") + mcl_potions._use_potion(itemstack, user, "#7700BB") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.weakness_func(user, 1.4, 240) - mcl_potions._use_potion(itemstack, user:get_pos(), "#7700BB") + mcl_potions._use_potion(itemstack, user, "#7700BB") return itemstack end }) @@ -382,13 +382,13 @@ minetest.register_craftitem("mcl_potions:poison", { on_place = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 45) - mcl_potions._use_potion(itemstack, user:get_pos(), "#225533") + mcl_potions._use_potion(itemstack, user, "#225533") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 45) - mcl_potions._use_potion(itemstack, user:get_pos(), "#225533") + mcl_potions._use_potion(itemstack, user, "#225533") return itemstack end }) @@ -403,13 +403,13 @@ minetest.register_craftitem("mcl_potions:poison_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 1.2, 21) - mcl_potions._use_potion(itemstack, user:get_pos(), "#447755") + mcl_potions._use_potion(itemstack, user, "#447755") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 1.2, 21) - mcl_potions._use_potion(itemstack, user:get_pos(), "#447755") + mcl_potions._use_potion(itemstack, user, "#447755") return itemstack end }) @@ -424,13 +424,13 @@ minetest.register_craftitem("mcl_potions:poison_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 90) - mcl_potions._use_potion(itemstack, user:get_pos(), "#336644") + mcl_potions._use_potion(itemstack, user, "#336644") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 90) - mcl_potions._use_potion(itemstack, user:get_pos(), "#336644") + mcl_potions._use_potion(itemstack, user, "#336644") return itemstack end }) @@ -446,13 +446,13 @@ minetest.register_craftitem("mcl_potions:regeneration", { on_place = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 45) - mcl_potions._use_potion(itemstack, user:get_pos(), "#A52BB2") + mcl_potions._use_potion(itemstack, user, "#A52BB2") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 45) - mcl_potions._use_potion(itemstack, user:get_pos(), "#A52BB2") + mcl_potions._use_potion(itemstack, user, "#A52BB2") return itemstack end }) @@ -467,13 +467,13 @@ minetest.register_craftitem("mcl_potions:regeneration_2", { on_place = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 1.2, 22) - mcl_potions._use_potion(itemstack, user:get_pos(), "#B52CC2") + mcl_potions._use_potion(itemstack, user, "#B52CC2") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 1.2, 22) - mcl_potions._use_potion(itemstack, user:get_pos(), "#B52CC2") + mcl_potions._use_potion(itemstack, user, "#B52CC2") return itemstack end }) @@ -488,13 +488,13 @@ minetest.register_craftitem("mcl_potions:regeneration_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 90) - mcl_potions._use_potion(itemstack, user:get_pos(), "#C53DD3") + mcl_potions._use_potion(itemstack, user, "#C53DD3") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 90) - mcl_potions._use_potion(itemstack, user:get_pos(), "#C53DD3") + mcl_potions._use_potion(itemstack, user, "#C53DD3") return itemstack end }) @@ -510,13 +510,13 @@ minetest.register_craftitem("mcl_potions:invisibility", { on_place = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 180) - mcl_potions._use_potion(itemstack, user:get_pos(), "#B0B0B0") + mcl_potions._use_potion(itemstack, user, "#B0B0B0") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 180) - mcl_potions._use_potion(itemstack, user:get_pos(), "#B0B0B0") + mcl_potions._use_potion(itemstack, user, "#B0B0B0") return itemstack end }) @@ -531,13 +531,13 @@ minetest.register_craftitem("mcl_potions:invisibility_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 480) - mcl_potions._use_potion(itemstack, user:get_pos(), "#A0A0A0") + mcl_potions._use_potion(itemstack, user, "#A0A0A0") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 480) - mcl_potions._use_potion(itemstack, user:get_pos(), "#A0A0A0") + mcl_potions._use_potion(itemstack, user, "#A0A0A0") return itemstack end }) @@ -560,13 +560,13 @@ minetest.register_craftitem("mcl_potions:water_breathing", { on_place = function(itemstack, user, pointed_thing) mcl_potions.water_breathing_func(user, 180) - mcl_potions._use_potion(itemstack, user:get_pos(), "#0000AA") + mcl_potions._use_potion(itemstack, user, "#0000AA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.water_breathing_func(user, 180) - mcl_potions._use_potion(itemstack, user:get_pos(), "#0000AA") + mcl_potions._use_potion(itemstack, user, "#0000AA") return itemstack end }) @@ -581,13 +581,13 @@ minetest.register_craftitem("mcl_potions:water_breathing_plus", { on_place = function(itemstack, user, pointed_thing) mcl_potions.water_breathing_func(user, 480) - mcl_potions._use_potion(itemstack, user:get_pos(), "#0000CC") + mcl_potions._use_potion(itemstack, user, "#0000CC") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.water_breathing_func(user, 480) - mcl_potions._use_potion(itemstack, user:get_pos(), "#0000CC") + mcl_potions._use_potion(itemstack, user, "#0000CC") return itemstack end }) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index a340b0a301..7cadc85adc 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -49,7 +49,7 @@ local function register_splash(name, descr, color, def) minacc = {x=-0.5, y=0, z=-0.5}, maxacc = {x=0.5, y=.2, z=0.5}, minexptime = 1, - maxexptime = 5, + maxexptime = 3, minsize = 2, maxsize = 4, collisiondetection = true, From ec2d700c9529d650063c66a7f355f732aa43b778 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 20 Jun 2020 10:16:00 -0400 Subject: [PATCH 049/108] Prevent compound regeneration --- mods/ITEMS/mcl_potions/functions.lua | 44 ++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 9cdd3c2a66..cd1a8ace98 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -1,5 +1,8 @@ local invisibility = {} local poisoned = {} +local regenerating = {} +local strong = {} +local weak = {} -- reset player invisibility/poison if they go offline minetest.register_on_leaveplayer(function(player) @@ -14,6 +17,18 @@ minetest.register_on_leaveplayer(function(player) poisoned[name] = nil end + if regenerating[name] then + regenerating[name] = nil + end + + if strong[name] then + strong[name] = nil + end + + if weak[name] then + weak[name] = nil + end + end) function mcl_potions.invisible(player, toggle) @@ -39,6 +54,13 @@ function mcl_potions.poison(player, toggle) end +function mcl_potions.regenerate(player, toggle) + + if not player then return false end + regenerating[player:get_player_name()] = toggle + +end + function mcl_potions._use_potion(item, obj, color) local d = 0.1 local pos = obj:get_pos() @@ -152,15 +174,19 @@ function mcl_potions.poison_func(player, factor, duration) end function mcl_potions.regeneration_func(player, factor, duration) - for i=1,math.floor(duration/factor) do - minetest.after(i*factor, function() - if player:get_hp() < 20 then - player:set_hp(player:get_hp() + 1) - end - end ) - end - for i=1,math.floor(duration) do - minetest.after(i, function() mcl_potions._add_spawner(player, "#A52BB2") end) + if not regenerating[player:get_player_name()] then + mcl_potions.regenerate(player, true) + for i=1,math.floor(duration/factor) do + minetest.after(i*factor, function() + if player:get_hp() < 20 then + player:set_hp(player:get_hp() + 1) + end + end ) + end + for i=1,math.floor(duration) do + minetest.after(i, function() mcl_potions._add_spawner(player, "#A52BB2") end) + end + minetest.after(duration, function() mcl_potions.regenerate(player, false) end) end end From e882dfc3c5bdb4e075a3cfd73c96d851ad45b202 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 20 Jun 2020 10:51:36 -0400 Subject: [PATCH 050/108] Drop ghast tear and rabbit foot --- mods/ENTITIES/mobs_mc/ghast.lua | 13 ++----------- mods/ENTITIES/mobs_mc/rabbit.lua | 1 + 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index 2efe56afc4..27998d170d 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -36,17 +36,8 @@ mobs:register_mob("mobs_mc:ghast", { walk_velocity = 1.6, run_velocity = 3.2, drops = { - {name = mobs_mc.items.gunpowder, - chance = 1, - min = 0, - max = 2,}, - -- TODO: drop tear when it's useful - -- ghast tear replaced with gunpowder - --{name = mobs_mc.items.ghast_tear, - {name = mobs_mc.items.gunpowder, - chance = 1, - min = 0, - max = 1,}, + {name = mobs_mc.items.gunpowder, chance = 1, min = 0, max = 2,}, + {name = mobs_mc.items.ghast_tear, chance = 3,min = 0,max = 1,}, }, animation = { stand_speed = 50, walk_speed = 50, run_speed = 50, diff --git a/mods/ENTITIES/mobs_mc/rabbit.lua b/mods/ENTITIES/mobs_mc/rabbit.lua index ef7b702bde..8c0885636a 100644 --- a/mods/ENTITIES/mobs_mc/rabbit.lua +++ b/mods/ENTITIES/mobs_mc/rabbit.lua @@ -33,6 +33,7 @@ local rabbit = { drops = { {name = mobs_mc.items.rabbit_raw, chance = 1, min = 0, max = 1}, {name = mobs_mc.items.rabbit_hide, chance = 1, min = 0, max = 1}, + {name = mobs_mc.items.rabbit_foot, chance = 10, min = 0, max = 1}, -- TODO: Drop rabbit's foot when it's useful --{name = mobs_mc.items.rabbit_foot, chance = 10, min = 1, max = 1}, }, From a8beeb9f9b41da0230eb3825c965a028c132736b Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 20 Jun 2020 12:02:42 -0400 Subject: [PATCH 051/108] Minor formatting. --- mods/ITEMS/mcl_potions/lingering.lua | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 04a1ff54a4..d3248623de 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -41,22 +41,22 @@ local function register_lingering(name, descr, color, def) if n ~= "air" then minetest.sound_play("mcl_potions_breaking_glass") minetest.add_particlespawner({ - amount = 1000, - time = 30, - minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d}, - maxpos = {x=pos.x+d, y=pos.y+d, z=pos.z+d}, - minvel = {x=-0.5, y=0, z=-0.5}, - maxvel = {x=0.5, y=0.5, z=0.5}, - minacc = {x=-0.2, y=0, z=-0.2}, - maxacc = {x=0.2, y=.05, z=0.2}, - minexptime = 1, - maxexptime = 2, - minsize = 2, - maxsize = 4, - collisiondetection = true, - vertical = false, - texture = "mcl_potions_sprite.png^[colorize:"..color..":127", - }) + amount = 1000, + time = 30, + minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d}, + maxpos = {x=pos.x+d, y=pos.y+d, z=pos.z+d}, + minvel = {x=-0.5, y=0, z=-0.5}, + maxvel = {x=0.5, y=0.5, z=0.5}, + minacc = {x=-0.2, y=0, z=-0.2}, + maxacc = {x=0.2, y=.05, z=0.2}, + minexptime = 1, + maxexptime = 2, + minsize = 2, + maxsize = 4, + collisiondetection = true, + vertical = false, + texture = "mcl_potions_sprite.png^[colorize:"..color..":127", + }) self.object:remove() for i, obj in ipairs(minetest.get_objects_inside_radius(pos, 4)) do From 3dbaac7549fe02c41e15a476b2723186beb6af7b Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 20 Jun 2020 13:30:35 -0400 Subject: [PATCH 052/108] Update invisibility potions and poisons to utilize globalstep. Seems smoother. --- mods/ITEMS/mcl_potions/functions.lua | 110 +++++++++++++++++---------- 1 file changed, 70 insertions(+), 40 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index cd1a8ace98..b98c3767dd 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -1,33 +1,69 @@ -local invisibility = {} -local poisoned = {} -local regenerating = {} -local strong = {} -local weak = {} +local is_invisible = {} +local is_poisoned = {} +local is_regenerating = {} +local is_strong = {} +local is_weak = {} --- reset player invisibility/poison if they go offline +local timer = 0 +minetest.register_globalstep(function(dtime) + + -- Check for invisible players + for player, bool in pairs(is_invisible) do + if is_invisible[player] then + mcl_potions._add_spawner(player, "#B0B0B0") + end + end + + -- Check for poisoned players + for player, bool in pairs(is_poisoned) do + + if is_poisoned[player] then + + player = player or player:get_luaentity() + + is_poisoned[player].timer = is_poisoned[player].timer + dtime + is_poisoned[player].hit_timer = (is_poisoned[player].hit_timer or 0) + dtime + + mcl_potions._add_spawner(player, "#225533") + + if is_poisoned[player].hit_timer >= is_poisoned[player].step then + player:set_hp( math.max(player:get_hp() - 1, 1) ) + is_poisoned[player].hit_timer = 0 + end + + if is_poisoned[player].timer >= is_poisoned[player].dur then + is_poisoned[player] = nil + end + + end + end + +end ) + +-- reset player is_invisible/poison if they go offline minetest.register_on_leaveplayer(function(player) local name = player:get_player_name() - if invisibility[name] then - invisibility[name] = nil + if is_invisible[name] then + is_invisible[name] = nil end - if poisoned[name] then - poisoned[name] = nil + if is_poisoned[name] then + is_poisoned[name] = nil end - if regenerating[name] then - regenerating[name] = nil + if is_regenerating[name] then + is_regenerating[name] = nil end - if strong[name] then - strong[name] = nil + if is_strong[name] then + is_strong[name] = nil end - if weak[name] then - weak[name] = nil - end + if is_weak[name] then + is_weak[name] = nil + end end) @@ -35,7 +71,7 @@ function mcl_potions.invisible(player, toggle) if not player then return false end - invisibility[player:get_player_name()] = toggle + is_invisible[player:get_player_name()] = toggle if toggle then -- hide player player:set_properties({visual_size = {x = 0, y = 0}}) @@ -50,14 +86,14 @@ end function mcl_potions.poison(player, toggle) if not player then return false end - poisoned[player:get_player_name()] = toggle + is_poisoned[player:get_player_name()] = toggle end function mcl_potions.regenerate(player, toggle) if not player then return false end - regenerating[player:get_player_name()] = toggle + is_regenerating[player:get_player_name()] = toggle end @@ -90,7 +126,7 @@ function mcl_potions._add_spawner(obj, color) local d = 0.2 local pos = obj:get_pos() minetest.add_particlespawner({ - amount = 5, + amount = 2, time = 1, minpos = {x=pos.x-d, y=pos.y+1, z=pos.z-d}, maxpos = {x=pos.x+d, y=pos.y+2, z=pos.z+d}, @@ -157,24 +193,23 @@ end function mcl_potions.poison_func(player, factor, duration) - if not poisoned[player:get_player_name()] then - mcl_potions.poison(player, true) - for i=1,math.floor(duration/factor) do - minetest.after(i*factor, function() - if poisoned[player:get_player_name()] then - player:set_hp(math.max(player:get_hp() - 1,1)) - end - end) - end - for i=1,math.floor(duration) do - minetest.after(i, function() mcl_potions._add_spawner(player, "#225533") end) - end - minetest.after(duration, function() mcl_potions.poison(player, false) end) + if not is_poisoned[player] then + + is_poisoned[player] = {step = factor, dur = duration, timer = 0} + + else + + local victim = is_poisoned[player] + + victim.step = math.min(victim.step, factor) + victim.dur = math.max(duration, victim.dur - victim.timer) + victim.timer = 0 + end end function mcl_potions.regeneration_func(player, factor, duration) - if not regenerating[player:get_player_name()] then + if not is_regenerating[player:get_player_name()] then mcl_potions.regenerate(player, true) for i=1,math.floor(duration/factor) do minetest.after(i*factor, function() @@ -194,11 +229,6 @@ end function mcl_potions.invisiblility_func(player, duration) mcl_potions.invisible(player, true) minetest.after(duration, function() mcl_potions.invisible(player, false) end ) - - for i=1,math.floor(duration) do - minetest.after(i, function() mcl_potions._add_spawner(player, "#B0B0B0") end) - end - end function mcl_potions.water_breathing_func(player, duration) From 12d0c3019e2b42b7226cae6d6dc12afd7164472c Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 20 Jun 2020 15:50:58 -0400 Subject: [PATCH 053/108] Move timing functions out to globalstep --- mods/ITEMS/mcl_potions/functions.lua | 265 +++++++++++++++++++++------ mods/ITEMS/mcl_potions/splash.lua | 2 +- 2 files changed, 212 insertions(+), 55 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index b98c3767dd..784ece4e26 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -3,19 +3,35 @@ local is_poisoned = {} local is_regenerating = {} local is_strong = {} local is_weak = {} +local is_water_breathing = {} +local is_leaping = {} +local is_swift = {} local timer = 0 minetest.register_globalstep(function(dtime) -- Check for invisible players - for player, bool in pairs(is_invisible) do + for player, vals in pairs(is_invisible) do + if is_invisible[player] then - mcl_potions._add_spawner(player, "#B0B0B0") + + player = player or player:get_luaentity() + + is_invisible[player].timer = is_invisible[player].timer + dtime + + if player:get_pos() then mcl_potions._add_spawner(player, "#B0B0B0") end + + if is_invisible[player].timer >= is_invisible[player].dur then + mcl_potions.make_invisible(player, false) + is_invisible[player] = nil + end + end + end -- Check for poisoned players - for player, bool in pairs(is_poisoned) do + for player, vals in pairs(is_poisoned) do if is_poisoned[player] then @@ -24,7 +40,7 @@ minetest.register_globalstep(function(dtime) is_poisoned[player].timer = is_poisoned[player].timer + dtime is_poisoned[player].hit_timer = (is_poisoned[player].hit_timer or 0) + dtime - mcl_potions._add_spawner(player, "#225533") + if player:get_pos() then mcl_potions._add_spawner(player, "#225533") end if is_poisoned[player].hit_timer >= is_poisoned[player].step then player:set_hp( math.max(player:get_hp() - 1, 1) ) @@ -36,6 +52,95 @@ minetest.register_globalstep(function(dtime) end end + + end + + -- Check for regnerating players + for player, vals in pairs(is_regenerating) do + + if is_regenerating[player] then + + player = player or player:get_luaentity() + + is_regenerating[player].timer = is_regenerating[player].timer + dtime + is_regenerating[player].heal_timer = (is_regenerating[player].heal_timer or 0) + dtime + + if player:get_pos() then mcl_potions._add_spawner(player, "#A52BB2") end + + if is_regenerating[player].heal_timer >= is_regenerating[player].step then + player:set_hp(math.min(player:get_properties().hp_max or 20, player:get_hp() + 1)) + is_regenerating[player].heal_timer = 0 + end + + if is_regenerating[player].timer >= is_regenerating[player].dur then + is_regenerating[player] = nil + end + + end + + end + + -- Check for water breathing players + for player, vals in pairs(is_water_breathing) do + + if is_water_breathing[player] then + + player = player or player:get_luaentity() + + is_water_breathing[player].timer = is_water_breathing[player].timer + dtime + + if player:get_pos() then mcl_potions._add_spawner(player, "#0000AA") end + + if player:get_breath() then + if player:get_breath() < 10 then player:set_breath(10) end + end + + if is_water_breathing[player].timer >= is_water_breathing[player].dur then + is_water_breathing[player] = nil + end + + end + + end + + -- Check for leaping players + for player, vals in pairs(is_leaping) do + + if is_leaping[player] then + + player = player or player:get_luaentity() + + is_leaping[player].timer = is_leaping[player].timer + dtime + + if player:get_pos() then mcl_potions._add_spawner(player, "#00CC33") end + + if is_leaping[player].timer >= is_leaping[player].dur then + playerphysics.remove_physics_factor(player, "jump", "leaping") + is_leaping[player] = nil + end + + end + + end + + -- Check for swift players + for player, vals in pairs(is_swift) do + + if is_swift[player] then + + player = player or player:get_luaentity() + + is_swift[player].timer = is_swift[player].timer + dtime + + if player:get_pos() then mcl_potions._add_spawner(player, "#009999") end + + if is_swift[player].timer >= is_swift[player].dur then + playerphysics.remove_physics_factor(player, "speed", "swiftness") + is_swift[player] = nil + end + + end + end end ) @@ -43,41 +148,52 @@ end ) -- reset player is_invisible/poison if they go offline minetest.register_on_leaveplayer(function(player) - local name = player:get_player_name() + player = player or player:get_luaentity() - if is_invisible[name] then - is_invisible[name] = nil + if is_invisible[player] then + is_invisible[player] = nil end - if is_poisoned[name] then - is_poisoned[name] = nil + if is_poisoned[player] then + is_poisoned[player] = nil end - if is_regenerating[name] then - is_regenerating[name] = nil + if is_regenerating[player] then + is_regenerating[player] = nil end - if is_strong[name] then - is_strong[name] = nil + if is_strong[player] then + is_strong[player] = nil end - if is_weak[name] then - is_weak[name] = nil + if is_weak[player] then + is_weak[player] = nil + end + + if is_water_breathing[player] then + is_water_breathing[player] = nil + end + + if is_leaping[player] then + is_leaping[player] = nil + end + + if is_swift[player] then + is_swift[player] = nil end end) -function mcl_potions.invisible(player, toggle) +function mcl_potions.make_invisible(player, toggle) if not player then return false end - is_invisible[player:get_player_name()] = toggle - if toggle then -- hide player + is_invisible[player].old_size = player:get_properties().visual_size player:set_properties({visual_size = {x = 0, y = 0}}) player:set_nametag_attributes({color = {a = 0}}) else -- show player - player:set_properties({visual_size = {x = 1, y = 1}}) + player:set_properties({visual_size = is_invisible[player].old_size}) player:set_nametag_attributes({color = {a = 255}}) end @@ -165,23 +281,48 @@ function mcl_potions.healing_func(player, hp) end function mcl_potions.swiftness_func(player, factor, duration) + if not player:get_meta() then return false end - playerphysics.add_physics_factor(player, "speed", "swiftness", factor) - minetest.after(duration, function() playerphysics.remove_physics_factor(player, "speed", "swiftness") end ) - for i=1,math.floor(duration) do - minetest.after(i, function() mcl_potions._add_spawner(player, "#009999") end) + + if not is_swift[player] then + + is_swift[player] = {dur = duration, timer = 0} + playerphysics.add_physics_factor(player, "speed", "swiftness", factor) + + else + + local victim = is_swift[player] + + playerphysics.add_physics_factor(player, "speed", "swiftness", factor) + victim.dur = math.max(duration, victim.dur - victim.timer) + victim.timer = 0 + end + end function mcl_potions.leaping_func(player, factor, duration) - if player:get_meta() then return false end - playerphysics.add_physics_factor(player, "jump", "leaping", factor) - minetest.after(duration, function() playerphysics.remove_physics_factor(player, "jump", "leaping") end ) - for i=1,math.floor(duration) do - minetest.after(i, function() mcl_potions._add_spawner(player, "#00CC33") end) + + if not player:get_meta() then return false end + + if not is_leaping[player] then + + is_leaping[player] = {dur = duration, timer = 0} + playerphysics.add_physics_factor(player, "jump", "leaping", factor) + + else + + local victim = is_leaping[player] + + playerphysics.add_physics_factor(player, "jump", "leaping", factor) + victim.dur = math.max(duration, victim.dur - victim.timer) + victim.timer = 0 + end + end + function mcl_potions.weakness_func(player, factor, duration) player:set_attribute("weakness", tostring(factor)) -- print(player:get_player_name().." ".."weakness = "..player:get_attribute("weakness")) @@ -191,6 +332,7 @@ function mcl_potions.weakness_func(player, factor, duration) end end + function mcl_potions.poison_func(player, factor, duration) if not is_poisoned[player] then @@ -208,40 +350,55 @@ function mcl_potions.poison_func(player, factor, duration) end end + function mcl_potions.regeneration_func(player, factor, duration) - if not is_regenerating[player:get_player_name()] then - mcl_potions.regenerate(player, true) - for i=1,math.floor(duration/factor) do - minetest.after(i*factor, function() - if player:get_hp() < 20 then - player:set_hp(player:get_hp() + 1) - end - end ) - end - for i=1,math.floor(duration) do - minetest.after(i, function() mcl_potions._add_spawner(player, "#A52BB2") end) - end - minetest.after(duration, function() mcl_potions.regenerate(player, false) end) + + if not is_regenerating[player] then + + is_regenerating[player] = {step = factor, dur = duration, timer = 0} + + else + + local victim = is_regenerating[player] + + victim.step = math.min(victim.step, factor) + victim.dur = math.max(duration, victim.dur - victim.timer) + victim.timer = 0 + end end function mcl_potions.invisiblility_func(player, duration) - mcl_potions.invisible(player, true) - minetest.after(duration, function() mcl_potions.invisible(player, false) end ) -end -function mcl_potions.water_breathing_func(player, duration) - if minetest.is_player(player) then + if not is_invisible[player] then - for i=1,math.floor(duration) do - minetest.after(i, function() - if player:get_breath() < 10 then - player:set_breath(10) - end - mcl_potions._add_spawner(player, "#0000AA") - end ) - end + is_invisible[player] = {dur = duration, timer = 0} + mcl_potions.make_invisible(player, true) + + else + + local victim = is_invisible[player] + + victim.dur = math.max(duration, victim.dur - victim.timer) + victim.timer = 0 + + end + +end + +function mcl_potions.water_breathing_func(player, duration) + + if not is_water_breathing[player] then + + is_water_breathing[player] = {dur = duration, timer = 0} + + else + + local victim = is_water_breathing[player] + + victim.dur = math.max(duration, victim.dur - victim.timer) + victim.timer = 0 end diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 7cadc85adc..c38db9f54b 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -61,7 +61,7 @@ local function register_splash(name, descr, color, def) if minetest.is_player(obj) or obj:get_entity_name() then - pos2 = obj:get_pos() + local pos2 = obj:get_pos() local rad = math.floor(math.sqrt((pos2.x-pos.x)^2 + (pos2.y-pos.y)^2 + (pos2.z-pos.z)^2)) if rad > 0 then def.potion_fun(obj, redux_map[rad]) else def.potion_fun(obj, 1) end From 95e4934c80fb6c96fbfbb6aa7864467de2501fe1 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 20 Jun 2020 17:26:42 -0400 Subject: [PATCH 054/108] Update brewing stand recipe - it can be built with cobble. --- mods/ITEMS/mcl_brewing/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index a345c52060..cad58b9f82 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -1030,6 +1030,6 @@ minetest.register_craft({ output = "mcl_brewing:stand", recipe = { { "", "mcl_mobitems:blaze_rod", "" }, - { "mcl_core:stone_smooth", "mcl_core:stone_smooth", "mcl_core:stone_smooth" }, + { "mcl_core:cobble", "mcl_core:cobble", "mcl_core:cobble" }, } }) From 7827e0019ffd739c2db308f292ebec38612b60bd Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 20 Jun 2020 18:11:35 -0400 Subject: [PATCH 055/108] Add check for player properties to ensure entity/player didn't die or leave. --- mods/ITEMS/mcl_potions/functions.lua | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 784ece4e26..80397bdffe 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -13,7 +13,7 @@ minetest.register_globalstep(function(dtime) -- Check for invisible players for player, vals in pairs(is_invisible) do - if is_invisible[player] then + if is_invisible[player] and player:get_properties() then player = player or player:get_luaentity() @@ -26,6 +26,8 @@ minetest.register_globalstep(function(dtime) is_invisible[player] = nil end + elseif not player:get_properties() then + is_invisible[player] = nil end end @@ -33,7 +35,7 @@ minetest.register_globalstep(function(dtime) -- Check for poisoned players for player, vals in pairs(is_poisoned) do - if is_poisoned[player] then + if is_poisoned[player] and player:get_properties() then player = player or player:get_luaentity() @@ -51,6 +53,8 @@ minetest.register_globalstep(function(dtime) is_poisoned[player] = nil end + elseif not player:get_properties() then + is_poisoned[player] = nil end end @@ -58,7 +62,7 @@ minetest.register_globalstep(function(dtime) -- Check for regnerating players for player, vals in pairs(is_regenerating) do - if is_regenerating[player] then + if is_regenerating[player] and player:get_properties() then player = player or player:get_luaentity() @@ -76,6 +80,8 @@ minetest.register_globalstep(function(dtime) is_regenerating[player] = nil end + elseif not player:get_properties() then + is_regenerating[player] = nil end end @@ -83,7 +89,7 @@ minetest.register_globalstep(function(dtime) -- Check for water breathing players for player, vals in pairs(is_water_breathing) do - if is_water_breathing[player] then + if is_water_breathing[player] and player:get_properties() then player = player or player:get_luaentity() @@ -99,6 +105,8 @@ minetest.register_globalstep(function(dtime) is_water_breathing[player] = nil end + elseif not player:get_properties() then + is_water_breathing[player] = nil end end @@ -106,7 +114,7 @@ minetest.register_globalstep(function(dtime) -- Check for leaping players for player, vals in pairs(is_leaping) do - if is_leaping[player] then + if is_leaping[player] and player:get_properties() then player = player or player:get_luaentity() @@ -119,6 +127,8 @@ minetest.register_globalstep(function(dtime) is_leaping[player] = nil end + elseif not player:get_properties() then + is_leaping[player] = nil end end @@ -126,7 +136,7 @@ minetest.register_globalstep(function(dtime) -- Check for swift players for player, vals in pairs(is_swift) do - if is_swift[player] then + if is_swift[player] and player:get_properties() then player = player or player:get_luaentity() @@ -139,6 +149,8 @@ minetest.register_globalstep(function(dtime) is_swift[player] = nil end + elseif not player:get_properties() then + is_swift[player] = nil end end From 162faa7e60e8060c9c091a8304f1cf7fc56ed542 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 20 Jun 2020 21:00:57 -0400 Subject: [PATCH 056/108] Add fire resistance groundwork. --- mods/ITEMS/mcl_potions/functions.lua | 9 +++++- mods/ITEMS/mcl_potions/init.lua | 8 +++--- mods/ITEMS/mcl_potions/potions.lua | 43 ++++++++++++++++++++++++++++ mods/ITEMS/mcl_potions/splash.lua | 8 ++++++ 4 files changed, 63 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 80397bdffe..e47aabfc1e 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -149,7 +149,7 @@ minetest.register_globalstep(function(dtime) is_swift[player] = nil end - elseif not player:get_properties() then + elseif not player:get_properties() then is_swift[player] = nil end @@ -415,3 +415,10 @@ function mcl_potions.water_breathing_func(player, duration) end end + + +function mcl_potions.fire_resistance_func(player, duration) + + + +end diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 46d4eb464f..e3d86f9548 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -300,9 +300,9 @@ local awkward_table = { ["mcl_core:sugar"] = "mcl_potions:swiftness", ["mcl_mobitems:magma_cream"] = "mcl_potions:fire_resistance", --add craft ["mcl_mobitems:blaze_powder"] = "mcl_potions:strength", --add craft - ["mcl_fishing:pufferfish_raw"] = "mcl_potions:water_breathing", --add craft - ["mcl_mobitems:ghast_tear"] = "mcl_potions:regeneration", --add craft - ["mcl_mobitems:spider_eye"] = "mcl_potions:poison", --add craft + ["mcl_fishing:pufferfish_raw"] = "mcl_potions:water_breathing", + ["mcl_mobitems:ghast_tear"] = "mcl_potions:regeneration", + ["mcl_mobitems:spider_eye"] = "mcl_potions:poison", ["mcl_mobitems:rabbit_foot"] = "mcl_potions:leaping", } @@ -320,7 +320,7 @@ for i, potion in ipairs({"healing","harming","swiftness","leaping","poison","reg table.insert(potions, potion) - if potion ~= "invisibility" and potion ~= "night_vision" and potion ~= "weakness" and potion ~= "water_breathing" then + if potion ~= "invisibility" and potion ~= "night_vision" and potion ~= "weakness" and potion ~= "water_breathing" and potion ~= "fire_resistance" then enhancement_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_2" enhancement_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_2_splash" table.insert(potions, potion.."_2") diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index 84324f2135..439cb5b9bc 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -591,3 +591,46 @@ minetest.register_craftitem("mcl_potions:water_breathing_plus", { return itemstack end }) + + +minetest.register_craftitem("mcl_potions:fire_resistance", { + description = S("Fire Resistance Potion"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#D0A040"), + inventory_image = potion_image("#D0A040"), + groups = { brewitem = 1, food = 0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.fire_resistance_func(user, 180) + mcl_potions._use_potion(itemstack, user, "#D0A040") + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.fire_resistance_func(user, 180) + mcl_potions._use_potion(itemstack, user, "#D0A040") + return itemstack + end +}) + +minetest.register_craftitem("mcl_potions:fire_resistance_plus", { + description = S("Fire Resistance Potion +"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#E0B050"), + inventory_image = potion_image("#E0B050"), + groups = { brewitem = 1, food = 0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.fire_resistance_func(user, 480) + mcl_potions._use_potion(itemstack, user, "#E0B050") + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.fire_resistance_func(user, 480) + mcl_potions._use_potion(itemstack, user, "#E0B050") + return itemstack + end +}) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index c38db9f54b..95efa8bde4 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -188,3 +188,11 @@ register_splash("water_breathing", "Splash Water Breathing", "#0000AA", { register_splash("water_breathing_plus", "Splash Water Breathing +", "#0000CC", { potion_fun = function(player, redx) mcl_potions.water_breathing_func(player, 360*redx) end }) + +register_splash("water_breathing_plus", "Splash Fire Resistance", "#D0A040", { + potion_fun = function(player, redx) mcl_potions.fire_resistance_func(player, 135*redx) end +}) + +register_splash("water_breathing_plus", "Splash Fire Resistance +", "#E0B050", { + potion_fun = function(player, redx) mcl_potions.fire_resistance_func(player, 360*redx) end +}) From 9836d631f9c6df29b460d3a6dd8b25d7ee2d5ff9 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 20 Jun 2020 21:17:45 -0400 Subject: [PATCH 057/108] Cleaning up old files and using a night-vision lite method. --- mods/ITEMS/mcl_potions/functions.lua | 5 +++ mods/ITEMS/mcl_potions/init.lua | 2 +- mods/ITEMS/mcl_potions/potions.lua | 37 +++++++++++++++++- mods/ITEMS/mcl_potions/splash.lua | 8 ++++ .../mcl_potions/textures/hb_potion_bar.png | Bin 91 -> 0 bytes .../textures/hb_swiftness_bgicon.png | Bin 1157 -> 0 bytes .../textures/hb_swiftness_icon.png | Bin 1167 -> 0 bytes .../textures/mcl_potions_healing.png | Bin 1261 -> 0 bytes .../textures/mcl_potions_night_vision.png | Bin 1260 -> 0 bytes .../textures/mcl_potions_swiftness.png | Bin 1262 -> 0 bytes .../textures/mcl_potions_weakness.png | Bin 1260 -> 0 bytes 11 files changed, 49 insertions(+), 3 deletions(-) delete mode 100644 mods/ITEMS/mcl_potions/textures/hb_potion_bar.png delete mode 100644 mods/ITEMS/mcl_potions/textures/hb_swiftness_bgicon.png delete mode 100644 mods/ITEMS/mcl_potions/textures/hb_swiftness_icon.png delete mode 100644 mods/ITEMS/mcl_potions/textures/mcl_potions_healing.png delete mode 100644 mods/ITEMS/mcl_potions/textures/mcl_potions_night_vision.png delete mode 100644 mods/ITEMS/mcl_potions/textures/mcl_potions_swiftness.png delete mode 100644 mods/ITEMS/mcl_potions/textures/mcl_potions_weakness.png diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index e47aabfc1e..26b57262dd 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -422,3 +422,8 @@ function mcl_potions.fire_resistance_func(player, duration) end + + +function mcl_potions.night_vision_func(player, duration) + player:override_day_night_ratio(0.45) +end diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index e3d86f9548..ff42768a7a 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -316,7 +316,7 @@ local output_table = { local enhancement_table = {} local extension_table = {} local potions = {"awkward", "mundane", "thick"} -for i, potion in ipairs({"healing","harming","swiftness","leaping","poison","regeneration","invisibility","weakness","water_breathing"}) do +for i, potion in ipairs({"healing","harming","swiftness","leaping","poison","regeneration","invisibility","weakness","water_breathing","night_vision"}) do table.insert(potions, potion) diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index 439cb5b9bc..57a2c6014d 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -152,10 +152,43 @@ minetest.register_craftitem("mcl_potions:harming_2", { minetest.register_craftitem("mcl_potions:night_vision", { description = S("Night Vision Potion"), _doc_items_longdesc = brewhelp, - wield_image = "mcl_potions_night_vision.png", - inventory_image = "mcl_potions_night_vision.png", + wield_image = potion_image("#009999"), + inventory_image = potion_image("#009999"), groups = { brewitem = 1, food=0}, stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.night_vision_func(user, 180) + mcl_potions._use_potion(itemstack, user, "#009999") + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.night_vision_func(user, 180) + mcl_potions._use_potion(itemstack, user, "#009999") + return itemstack + end, +}) + +minetest.register_craftitem("mcl_potions:night_vision_plus", { + description = S("Night Vision Potion +"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#000A0A"), + inventory_image = potion_image("#000A0A"), + groups = { brewitem = 1, food=0}, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.night_vision_func(user, 480) + mcl_potions._use_potion(itemstack, user, "#000A0A") + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.night_vision_func(user, 480) + mcl_potions._use_potion(itemstack, user, "#000A0A") + return itemstack + end, }) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 95efa8bde4..0f60342df2 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -196,3 +196,11 @@ register_splash("water_breathing_plus", "Splash Fire Resistance", "#D0A040", { register_splash("water_breathing_plus", "Splash Fire Resistance +", "#E0B050", { potion_fun = function(player, redx) mcl_potions.fire_resistance_func(player, 360*redx) end }) + +register_splash("night_vision", "Splash Night Vision", "#009999", { + potion_fun = function(player, redx) mcl_potions.night_vision_func(player, 135*redx) end +}) + +register_splash("night_vision_plus", "Splash Night Vision +", "#000A0A", { + potion_fun = function(player, redx) mcl_potions.night_vision_func(player, 360*redx) end +}) diff --git a/mods/ITEMS/mcl_potions/textures/hb_potion_bar.png b/mods/ITEMS/mcl_potions/textures/hb_potion_bar.png deleted file mode 100644 index ce0aa78ec1e360bc7bc00c81028a6d6b176887fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^Oh7Ea0U|e_vV07r7>k44ofy`glX(f`hhHzX@ lj@h54$;`|w48*Y-43Ddr6zpEx`vDa&c)I$ztaD0e0suGc6juNM diff --git a/mods/ITEMS/mcl_potions/textures/hb_swiftness_bgicon.png b/mods/ITEMS/mcl_potions/textures/hb_swiftness_bgicon.png deleted file mode 100644 index b01f148599a6e7b1d4f79afa58a8842f0b8841e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1157 zcmds#v1*i25QWdO5t3j6S|&({t>x4f$}aALY(kPIT|k^7m7`3Tk63 z*a%Yz;+v$Md~=_`%EAl(zs%ly&wS_1|MqzGXlHwGThh*QF+1URtDns&?>|RZccrP0 zAD_)BC6inVDW&SlOy;tXrL20>P44oLr@Z=Xn8FpINJaJ4G^Hy;naV;*Whz&NDpeF{ zBaIf9IbGeSmz#xInpL-@ayJk2G_R&$Gu$F9(xMuQv+0&$nU)13SFPMCtkR0EP$LF3 zlwh$(W3-V*i_6u9x@LuYx>x(7Emed^dQ{tmg3S!i^eo&1#aXZLN-yk@2bkO@4*Uaw zL#Po08cL4BL1VO$Myoox-lk?{M0Jq(qb*ftWRWX&p>pR6Etp#l03lV zHgUj&VH`q@7|`4V3l18ijdb;h`ZU|rtYTsWi9gy>WmOMwjK3+yM0=iNNDVb|@9~Z( zn{lMm(;kK!d3fmI53F`DIw8&Hz?29NPovfN694(@>8sawq={ahtWLrBFW29Oy8kmS zIlJ|2asEQu{n5|l!@b>o{ybRD9-M8)lW&vh&5JL$zF%&9-aFKK{eJ%Y`E-3lUl;e^ T{kr{eqkApqtJ$ZA7jLcs;?Oys diff --git a/mods/ITEMS/mcl_potions/textures/hb_swiftness_icon.png b/mods/ITEMS/mcl_potions/textures/hb_swiftness_icon.png deleted file mode 100644 index 5c85ae17799a58b96bcccee6585d29709b44772e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1167 zcmds#v1*i25QWcX3pc@}u}esyo!AJ2*lI{H3$iY23eyGDDXc;?jarF~t)MV3A=t&< zLSeAA^D%74Z|)OVS$N_9m)U#oneUwW-z^vSHaE66ByG+Q_gDO`_cNRF{`uhdHEF8l z{i6d)$t0ITN~yXslesKpDXZRele;|RDX%^orf@|lQc-<1P3g)|rm|2{naWk6N)-j# zNTbDNPFMHoum(hGa!0VcPJ1OGta z5NgDLhLWRj&=_r`(W*|ax2ahfQ5_`yXiJqDS>%dcDA7_J1~fOpf`i6rBV9eBKFu~YtC$!;;*YjeS=9p^<8O*F(VpiRQbUd0d%Ppc zW*q7Cw1?qF9v*u51FId3PDt}PFeSpn(`Yrm#DD&J`ttRzG|`LI;vpFS<@(!DcfQ9n z&aR&x9zU11zV)H_y*b d&rf%6FCS@pa_jilmyfTy>-=D`|7q{!%^xOIJbeHF diff --git a/mods/ITEMS/mcl_potions/textures/mcl_potions_healing.png b/mods/ITEMS/mcl_potions/textures/mcl_potions_healing.png deleted file mode 100644 index 66bdbe0065be22e8cb94da875e61db61ee8da2bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1261 zcmds#y=#+E6vj_Xs%a%1vf0p3{D6vr;z4jwNhQTpN({9_9fX4PAa$wOK~zvgs7e)! z8aUw4!O0ppm0`P#Z4UckOwev8*#utAm9+x5Cb$QaTFYA3~fk5%OkniMvY~v z9znt%+M+U3bL0xUpuncOsUt@ujR3%f;|LmV5hd~fCT=4RFu^b!f*N9g#!X;>1C5~# zX^#=bX>6m$a!d?C!XMhAGWQr@8h=oviN-wBkOC^@9^*|>24hMmrkxB2a`F(vPgvm~ zb%HcL2TTd!!Bc9LzQlk2n!0$opD07KWAzij_%GMrhFW^7(>U8bQ#*N{sCOlv%!6IM zCHy%zQXLvUaQo%zi^B5We6F!)%k$HBXP3GsuHPA2-O*lYPA$Cp+O91%=W;h@4sIXa zwDzoZ8 GYkvT-_G^3q diff --git a/mods/ITEMS/mcl_potions/textures/mcl_potions_night_vision.png b/mods/ITEMS/mcl_potions/textures/mcl_potions_night_vision.png deleted file mode 100644 index 9a4ee688c9394bacd4292c0ad7e2fa430e357b89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1260 zcmds#(Tj{>6vofAX=lgIxZr}FmfahrQKpUyYSpr{cBZsVYqq!$g`<_CY>KE|7ecwz zbnaGBBAW}lMX61jrB2kAB3WC?g$pYsMbq(|_b+he!du@roq6B)Ilt#Q-?jSiP(Ig{ zBcgn*S{cD_PdwQ+yeqe_KPPIV`o6{>N+Ko_A|)~+kBXUCh?UrgJvN0&ghWY<#N(_o zsgNqEk$PM;CKECxGctz~Ig<;yk{dY+XhRxWxQx>tePRi-G8?l;TT~(}%3>@Y6xdW@ zRaRs5fWlc5Hf1w52P3Ys3%jx#JGz1zVt@uEu&{^5(1tX$aM{C9)L1HFA|C$G7L}@~ ziF()t1vX8^Ow8dPP&g~D;wBDz$OD+TjX2;R5O4@;hyfauI0_ClhBl<3<&j)$qsB5- zk09X>ZBd!2IdX+vP+(Kt)R7~SMgZW#aRd#wh!S}K6Solum|z$VK@BlL<0i1cfyU5= zw8x0zG`3M=IVOf6;SX(5nR^T{jXx;TL}Q+5NCA~{kMX7`gE6HO(@us1IeCcTC#-Og zIzbwr1Ez%V;3>6AU*bQ19lvm~nTKWZPluk&EQ}3g&s}ZRdQbmY+vxl~@NE3y z^p;lU-p*~S%LN*pIKQrZe{sW`^+WxoChc8nD>dIveVm&e-F$4}OXk)_%H3`K?0?bz z;P9)XkEgoYA9a77tZyp6@BGkP>{&B^VCl~1U)xtEn;pw^>HEyew`~4YSgH*USElzI Gx%>wc!)$*5 diff --git a/mods/ITEMS/mcl_potions/textures/mcl_potions_swiftness.png b/mods/ITEMS/mcl_potions/textures/mcl_potions_swiftness.png deleted file mode 100644 index 4dbf788a61fd9379fceb236ecc919e1f3ffdd65b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1262 zcmds#v1^lI5XLW!k{V1D2N7GPZbDqjE#e?5sck?@jD;dth@v+HheFjsS|}n?#bO6b zI1yB^qJn~pU24f7)#AAbh2WrrlMXsKWDq@{d;bC_2VeNUaCzVNx!?2Lcda@+SjcbB z6H%cuRIcH-FP`o!-sK0^SBSDyJu)(Yl8A|fNQsQdqhcl&VkI_Wk4<3`AyE<|@i?nY zDx^wkq#jp|$%IVFjLe}#&g4R_^>GT=p;&HI|B)h=)J4MWrfg zq8@fZflX5}6LYu+6wZpPxQW9a@&G1oBM$fn1RR1IVt@uEj)DV?p$%zhc_bIxsIg4d zBS`o|TU2Ihj$C0E6xdWZb>xVo5dgSw96`e^qC_6R#BIa@CK!f8P(uvRxCtz9pfR)| z?J=S_jcwFej)@^i_(NM%<{kq~;}427(U@l%Qb48LW4tNKU`*-6w3FdLP99?T2`e0= zPLRgufGHt7cuK9(m-x?LXD?0eAj;7B+VF8;{Fm!*L+x4B2F`96A38BXRD2arX1-MH z!Jjjg^1+e4voGJjE42E$*Vmi%E@>?F&nzxawHFpI-f7&ppZjw2=;Y}BEqzx$?>e=w z{o>YdTDvf|wcbllrr+$|d~Bh2ZQJ01Qj-pU%$Az%d!Jg%qbp}#f6YAHN%=>=I@7DU zr+0rmKUtm4ekgXPA8#t3yZUXeFqb>M=X-5p>UO8~cHMZ_&+JlZzJF|En5qm6m!BP~ GU;YD}6mCfX diff --git a/mods/ITEMS/mcl_potions/textures/mcl_potions_weakness.png b/mods/ITEMS/mcl_potions/textures/mcl_potions_weakness.png deleted file mode 100644 index 524ebeea6aa747c33bfc685e2cd55aac676e3ebe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1260 zcmds#y=zoa5XEQn2quB7f=zUdZebxJKD3J#+aT{@f35MYi)DQzSZUPG&Xbf#g zdyFVfV;eP=V`2yr{?HbcxyJz0_=6%%H0GIx6i_Mm7;lO)7*jei?PNHRlZP07!U_ke z6QuDuU`hxNo>HsyCI0i*{!?dqiE?zTR^0)N|8o6psD(K_gtMJT%0r_>`4{ozrdH<* z`15?F)L&nB`Pr+D`Bt%`z0vpP$w>PNo&WlL*YxArTQfcD%V!UN-ubiKTy$k};!ERQ zZ9c2NK0eeOp_^@`>&^1iXno(Z+}+`}o|6mj4DTHu%YNxrnjtZEx+*K>9&{O4}Qq{7PmSJE5A+t9)Ei+EL8@orF)wj G=l%evV{E$s From 44536dd75dfc350fc7868b5c47d9d397343c1302 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 20 Jun 2020 21:30:26 -0400 Subject: [PATCH 058/108] put some rudementary night vision together --- mods/ITEMS/mcl_potions/functions.lua | 44 ++++++++++++++++++++++++++-- mods/ITEMS/mcl_potions/potions.lua | 16 +++++----- mods/ITEMS/mcl_potions/splash.lua | 4 +-- 3 files changed, 52 insertions(+), 12 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 26b57262dd..1c32b52333 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -6,8 +6,9 @@ local is_weak = {} local is_water_breathing = {} local is_leaping = {} local is_swift = {} +local is_cat = {} + -local timer = 0 minetest.register_globalstep(function(dtime) -- Check for invisible players @@ -155,6 +156,28 @@ minetest.register_globalstep(function(dtime) end + -- Check for Night Vision equipped players + for player, vals in pairs(is_cat) do + + if is_cat[player] and player:get_properties() then + + player = player or player:get_luaentity() + + is_cat[player].timer = is_cat[player].timer + dtime + + if player:get_pos() then mcl_potions._add_spawner(player, "#1010AA") end + player:override_day_night_ratio(0.45) + + if is_cat[player].timer >= is_cat[player].dur then + is_cat[player] = nil + end + + elseif not player:get_properties() then + is_cat[player] = nil + end + + end + end ) -- reset player is_invisible/poison if they go offline @@ -194,6 +217,10 @@ minetest.register_on_leaveplayer(function(player) is_swift[player] = nil end + if is_cat[player] then + is_cat[player] = nil + end + end) function mcl_potions.make_invisible(player, toggle) @@ -425,5 +452,18 @@ end function mcl_potions.night_vision_func(player, duration) - player:override_day_night_ratio(0.45) + + if not is_cat[player] then + + is_cat[player] = {dur = duration, timer = 0} + + else + + local victim = is_cat[player] + + victim.dur = math.max(duration, victim.dur - victim.timer) + victim.timer = 0 + + end + end diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index 57a2c6014d..26036e146b 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -152,20 +152,20 @@ minetest.register_craftitem("mcl_potions:harming_2", { minetest.register_craftitem("mcl_potions:night_vision", { description = S("Night Vision Potion"), _doc_items_longdesc = brewhelp, - wield_image = potion_image("#009999"), - inventory_image = potion_image("#009999"), + wield_image = potion_image("#1010AA"), + inventory_image = potion_image("#1010AA"), groups = { brewitem = 1, food=0}, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.night_vision_func(user, 180) - mcl_potions._use_potion(itemstack, user, "#009999") + mcl_potions._use_potion(itemstack, user, "#1010AA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.night_vision_func(user, 180) - mcl_potions._use_potion(itemstack, user, "#009999") + mcl_potions._use_potion(itemstack, user, "#1010AA") return itemstack end, }) @@ -173,20 +173,20 @@ minetest.register_craftitem("mcl_potions:night_vision", { minetest.register_craftitem("mcl_potions:night_vision_plus", { description = S("Night Vision Potion +"), _doc_items_longdesc = brewhelp, - wield_image = potion_image("#000A0A"), - inventory_image = potion_image("#000A0A"), + wield_image = potion_image("#2020BA"), + inventory_image = potion_image("#2020BA"), groups = { brewitem = 1, food=0}, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.night_vision_func(user, 480) - mcl_potions._use_potion(itemstack, user, "#000A0A") + mcl_potions._use_potion(itemstack, user, "#2020BA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.night_vision_func(user, 480) - mcl_potions._use_potion(itemstack, user, "#000A0A") + mcl_potions._use_potion(itemstack, user, "#2020BA") return itemstack end, }) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 0f60342df2..108514387c 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -197,10 +197,10 @@ register_splash("water_breathing_plus", "Splash Fire Resistance +", "#E0B050", { potion_fun = function(player, redx) mcl_potions.fire_resistance_func(player, 360*redx) end }) -register_splash("night_vision", "Splash Night Vision", "#009999", { +register_splash("night_vision", "Splash Night Vision", "#1010AA", { potion_fun = function(player, redx) mcl_potions.night_vision_func(player, 135*redx) end }) -register_splash("night_vision_plus", "Splash Night Vision +", "#000A0A", { +register_splash("night_vision_plus", "Splash Night Vision +", "#2020BA", { potion_fun = function(player, redx) mcl_potions.night_vision_func(player, 360*redx) end }) From 266713631a635a1980d3947db79d271b21973767 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sun, 21 Jun 2020 08:39:08 -0400 Subject: [PATCH 059/108] Correct sounds heard at distance and blast resistance for brewing stand. --- mods/ITEMS/mcl_brewing/init.lua | 78 ++++++++++++++-------------- mods/ITEMS/mcl_potions/functions.lua | 2 +- mods/ITEMS/mcl_potions/lingering.lua | 2 +- mods/ITEMS/mcl_potions/splash.lua | 2 +- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index cad58b9f82..a680dca156 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -158,9 +158,9 @@ local function brewing_stand_timer(pos, elapsed) for i=1, inv:get_size("stand") do if brew_output[i] then - minetest.sound_play("mcl_brewing_complete", {pos=pos, gain=0.4, max_hear_range=16}, true) + minetest.sound_play("mcl_brewing_complete", {pos=pos, gain=0.4, max_hear_range=6}, true) inv:set_stack("stand", i, brew_output[i]) - minetest.sound_play("mcl_potions_bottle_pour", {pos=pos, gain=0.6, max_hear_range=16}, true) + minetest.sound_play("mcl_potions_bottle_pour", {pos=pos, gain=0.6, max_hear_range=6}, true) end end stand_timer = 0 @@ -291,11 +291,11 @@ local doc_string = S("To brew, place fuel first and/or your ingredient last!") local tiles = {"mcl_brewing_top.png", --top - "mcl_brewing_base.png", --bottom - "mcl_brewing_side.png", --right - "mcl_brewing_side.png", --left - "mcl_brewing_side.png", --back - "mcl_brewing_side.png^[transformFX"} --front + "mcl_brewing_base.png", --bottom + "mcl_brewing_side.png", --right + "mcl_brewing_side.png", --left + "mcl_brewing_side.png", --back + "mcl_brewing_side.png^[transformFX"} --front local allow_put = function(pos, listname, index, stack, player) local name = player:get_player_name() if minetest.is_protected(pos, name) then @@ -357,7 +357,7 @@ minetest.register_node("mcl_brewing:stand_000", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 0, not_in_craft_guide = 0}, + groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 0, not_in_craft_guide = 0}, tiles = tiles, drop = {"mcl_brewing:stand"}, paramtype = "light", @@ -405,9 +405,9 @@ minetest.register_node("mcl_brewing:stand_000", { {0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3 } }, - sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 1200, - _mcl_hardness = 5, + sounds = mcl_sounds.node_sound_glass_defaults(), + _mcl_blast_resistance = 0, + _mcl_hardness = 1, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, @@ -442,9 +442,9 @@ minetest.register_node("mcl_brewing:stand_100", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, - drop = {"mlc_brewing:stand"}, + drop = "mlc_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -491,8 +491,8 @@ minetest.register_node("mcl_brewing:stand_100", { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 1200, - _mcl_hardness = 5, + _mcl_blast_resistance = 0, + _mcl_hardness = 1, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, @@ -526,9 +526,9 @@ minetest.register_node("mcl_brewing:stand_010", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, - drop = {"mlc_brewing:stand"}, + drop = "mlc_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -575,8 +575,8 @@ minetest.register_node("mcl_brewing:stand_010", { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 1200, - _mcl_hardness = 5, + _mcl_blast_resistance = 0, + _mcl_hardness = 1, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, @@ -610,9 +610,9 @@ minetest.register_node("mcl_brewing:stand_001", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, - drop = {"mlc_brewing:stand"}, + drop = "mlc_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -659,8 +659,8 @@ minetest.register_node("mcl_brewing:stand_001", { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 1200, - _mcl_hardness = 5, + _mcl_blast_resistance = 0, + _mcl_hardness = 1, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, @@ -694,9 +694,9 @@ minetest.register_node("mcl_brewing:stand_110", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, - drop = {"mlc_brewing:stand"}, + drop = "mlc_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -743,8 +743,8 @@ minetest.register_node("mcl_brewing:stand_110", { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 1200, - _mcl_hardness = 5, + _mcl_blast_resistance = 0, + _mcl_hardness = 1, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, @@ -778,9 +778,9 @@ minetest.register_node("mcl_brewing:stand_101", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, - drop = {"mlc_brewing:stand"}, + drop = "mlc_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -827,8 +827,8 @@ minetest.register_node("mcl_brewing:stand_101", { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 1200, - _mcl_hardness = 5, + _mcl_blast_resistance = 0, + _mcl_hardness = 1, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, @@ -862,9 +862,9 @@ minetest.register_node("mcl_brewing:stand_011", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, - drop = {"mlc_brewing:stand"}, + drop = "mlc_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -911,8 +911,8 @@ minetest.register_node("mcl_brewing:stand_011", { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 1200, - _mcl_hardness = 5, + _mcl_blast_resistance = 0, + _mcl_hardness = 1, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, @@ -946,9 +946,9 @@ minetest.register_node("mcl_brewing:stand_111", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, - drop = {"mlc_brewing:stand"}, + drop = "mlc_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -995,8 +995,8 @@ minetest.register_node("mcl_brewing:stand_111", { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 1200, - _mcl_hardness = 5, + _mcl_blast_resistance = 0, + _mcl_hardness = 1, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 1c32b52333..a2e7befc59 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -256,7 +256,7 @@ function mcl_potions._use_potion(item, obj, color) local d = 0.1 local pos = obj:get_pos() item:replace("mcl_potions:glass_bottle") - minetest.sound_play("mcl_potions_drinking") + minetest.sound_play("mcl_potions_drinking", {pos = pos, max_hear_distance = 6, gain = 1}) minetest.add_particlespawner({ amount = 25, time = 1, diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index d3248623de..26b5c3c12b 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -39,7 +39,7 @@ local function register_lingering(name, descr, color, def) local d = 2 local redux_map = {7/8,0.5,0.25} if n ~= "air" then - minetest.sound_play("mcl_potions_breaking_glass") + minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1}) minetest.add_particlespawner({ amount = 1000, time = 30, diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 108514387c..d1d2708db7 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -38,7 +38,7 @@ local function register_splash(name, descr, color, def) local d = 2 local redux_map = {7/8,0.5,0.25} if n ~= "air" then - minetest.sound_play("mcl_potions_breaking_glass") + minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1}) minetest.add_particlespawner({ amount = 50, time = 2, From a233977b355f2f73160d2a436f0391c3ea3dd566 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sun, 21 Jun 2020 08:57:44 -0400 Subject: [PATCH 060/108] Fix stand not dropping when mined with pickaxe. --- mods/ITEMS/mcl_brewing/init.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index a680dca156..3783221a6e 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -359,7 +359,7 @@ minetest.register_node("mcl_brewing:stand_000", { _tt_help = S("Brew Potions"), groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 0, not_in_craft_guide = 0}, tiles = tiles, - drop = {"mcl_brewing:stand"}, + drop = "mcl_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -444,7 +444,7 @@ minetest.register_node("mcl_brewing:stand_100", { _tt_help = S("Brew Potions"), groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, - drop = "mlc_brewing:stand", + drop = "mcl_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -528,7 +528,7 @@ minetest.register_node("mcl_brewing:stand_010", { _tt_help = S("Brew Potions"), groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, - drop = "mlc_brewing:stand", + drop = "mcl_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -612,7 +612,7 @@ minetest.register_node("mcl_brewing:stand_001", { _tt_help = S("Brew Potions"), groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, - drop = "mlc_brewing:stand", + drop = "mcl_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -696,7 +696,7 @@ minetest.register_node("mcl_brewing:stand_110", { _tt_help = S("Brew Potions"), groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, - drop = "mlc_brewing:stand", + drop = "mcl_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -780,7 +780,7 @@ minetest.register_node("mcl_brewing:stand_101", { _tt_help = S("Brew Potions"), groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, - drop = "mlc_brewing:stand", + drop = "mcl_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -864,7 +864,7 @@ minetest.register_node("mcl_brewing:stand_011", { _tt_help = S("Brew Potions"), groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, - drop = "mlc_brewing:stand", + drop = "mcl_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, @@ -948,7 +948,7 @@ minetest.register_node("mcl_brewing:stand_111", { _tt_help = S("Brew Potions"), groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, - drop = "mlc_brewing:stand", + drop = "mcl_brewing:stand", paramtype = "light", sunlight_propagates = true, is_ground_content = false, From 2cf0ea664ba7e873037dca550709d929d3a3db3b Mon Sep 17 00:00:00 2001 From: Brandon Date: Sun, 21 Jun 2020 17:41:48 -0400 Subject: [PATCH 061/108] Fix on_blast method to drop items. --- mods/ITEMS/mcl_brewing/init.lua | 55 +++++++++++++++++---------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 3783221a6e..e412990ac2 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -322,10 +322,13 @@ local on_put = function(pos, listname, index, stack, player) end local after_dig = function(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) - local meta2 = meta meta:from_table(oldmetadata) drop_brewing_stand_items(pos, meta) - meta:from_table(meta2:to_table()) +end +local after_blast = function(pos) + local meta = minetest.get_meta(pos) + drop_brewing_stand_items(pos, meta) + minetest.remove_node(pos) end local allow_take = function(pos, listname, index, stack, player) local name = player:get_player_name() @@ -357,7 +360,7 @@ minetest.register_node("mcl_brewing:stand_000", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 0, not_in_craft_guide = 0}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 0, not_in_craft_guide = 0}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -406,9 +409,9 @@ minetest.register_node("mcl_brewing:stand_000", { } }, sounds = mcl_sounds.node_sound_glass_defaults(), - _mcl_blast_resistance = 0, + _mcl_blast_resistance = 1, _mcl_hardness = 1, - + on_blast = after_blast, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -442,7 +445,7 @@ minetest.register_node("mcl_brewing:stand_100", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -491,9 +494,9 @@ minetest.register_node("mcl_brewing:stand_100", { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 0, + _mcl_blast_resistance = 1, _mcl_hardness = 1, - + on_blast = after_blast, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -526,7 +529,7 @@ minetest.register_node("mcl_brewing:stand_010", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -575,9 +578,9 @@ minetest.register_node("mcl_brewing:stand_010", { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 0, + _mcl_blast_resistance = 1, _mcl_hardness = 1, - + on_blast = after_blast, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -610,7 +613,7 @@ minetest.register_node("mcl_brewing:stand_001", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -659,9 +662,9 @@ minetest.register_node("mcl_brewing:stand_001", { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 0, + _mcl_blast_resistance = 1, _mcl_hardness = 1, - + on_blast = after_blast, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -694,7 +697,7 @@ minetest.register_node("mcl_brewing:stand_110", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -743,9 +746,9 @@ minetest.register_node("mcl_brewing:stand_110", { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 0, + _mcl_blast_resistance = 1, _mcl_hardness = 1, - + on_blast = after_blast, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -778,7 +781,7 @@ minetest.register_node("mcl_brewing:stand_101", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -827,9 +830,9 @@ minetest.register_node("mcl_brewing:stand_101", { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 0, + _mcl_blast_resistance = 1, _mcl_hardness = 1, - + on_blast = after_blast, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -862,7 +865,7 @@ minetest.register_node("mcl_brewing:stand_011", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -911,9 +914,9 @@ minetest.register_node("mcl_brewing:stand_011", { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 0, + _mcl_blast_resistance = 1, _mcl_hardness = 1, - + on_blast = after_blast, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -946,7 +949,7 @@ minetest.register_node("mcl_brewing:stand_111", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, container=4, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -995,9 +998,9 @@ minetest.register_node("mcl_brewing:stand_111", { } }, sounds = mcl_sounds.node_sound_metal_defaults(), - _mcl_blast_resistance = 0, + _mcl_blast_resistance = 1, _mcl_hardness = 1, - + on_blast = after_blast, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, From f969bef0ea8acefe220cf7e7275a4d2093f398a8 Mon Sep 17 00:00:00 2001 From: Brandon Date: Mon, 22 Jun 2020 15:52:20 -0400 Subject: [PATCH 062/108] Swap on_blast to on_destruct --- mods/ITEMS/mcl_brewing/init.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index e412990ac2..d56c91a1fc 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -411,7 +411,7 @@ minetest.register_node("mcl_brewing:stand_000", { sounds = mcl_sounds.node_sound_glass_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_blast = after_blast, + on_destruct = after_dig, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -496,7 +496,7 @@ minetest.register_node("mcl_brewing:stand_100", { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_blast = after_blast, + on_destruct = after_dig, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -580,7 +580,7 @@ minetest.register_node("mcl_brewing:stand_010", { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_blast = after_blast, + on_destruct = after_dig, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -664,7 +664,7 @@ minetest.register_node("mcl_brewing:stand_001", { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_blast = after_blast, + on_destruct = after_dig, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -748,7 +748,7 @@ minetest.register_node("mcl_brewing:stand_110", { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_blast = after_blast, + on_destruct = after_dig, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -832,7 +832,7 @@ minetest.register_node("mcl_brewing:stand_101", { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_blast = after_blast, + on_destruct = after_dig, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -916,7 +916,7 @@ minetest.register_node("mcl_brewing:stand_011", { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_blast = after_blast, + on_destruct = after_dig, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -1000,7 +1000,7 @@ minetest.register_node("mcl_brewing:stand_111", { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_blast = after_blast, + on_destruct = after_dig, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, From d55be9fa028bb4a2d6c5255eafa763a4e0c0090b Mon Sep 17 00:00:00 2001 From: Brandon Date: Mon, 22 Jun 2020 15:56:43 -0400 Subject: [PATCH 063/108] Fix on_destruct to actually drop items. --- mods/ITEMS/mcl_brewing/init.lua | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index d56c91a1fc..f8d001a21a 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -296,6 +296,7 @@ local tiles = {"mcl_brewing_top.png", --top "mcl_brewing_side.png", --left "mcl_brewing_side.png", --back "mcl_brewing_side.png^[transformFX"} --front + local allow_put = function(pos, listname, index, stack, player) local name = player:get_player_name() if minetest.is_protected(pos, name) then @@ -305,6 +306,7 @@ local allow_put = function(pos, listname, index, stack, player) return stack:get_count() end end + local on_put = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() @@ -320,16 +322,18 @@ local on_put = function(pos, listname, index, stack, player) minetest.get_node_timer(pos):start(1.0) --some code here to enforce only potions getting placed on stands end + local after_dig = function(pos, oldnode, oldmetadata, digger) local meta = minetest.get_meta(pos) meta:from_table(oldmetadata) drop_brewing_stand_items(pos, meta) end -local after_blast = function(pos) + +local on_destruct = function(pos) local meta = minetest.get_meta(pos) drop_brewing_stand_items(pos, meta) - minetest.remove_node(pos) end + local allow_take = function(pos, listname, index, stack, player) local name = player:get_player_name() if minetest.is_protected(pos, name) then @@ -339,6 +343,7 @@ local allow_take = function(pos, listname, index, stack, player) return stack:get_count() end end + local on_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() @@ -411,7 +416,7 @@ minetest.register_node("mcl_brewing:stand_000", { sounds = mcl_sounds.node_sound_glass_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_destruct = after_dig, + on_destruct = on_destruct, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -496,7 +501,7 @@ minetest.register_node("mcl_brewing:stand_100", { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_destruct = after_dig, + on_destruct = on_destruct, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -580,7 +585,7 @@ minetest.register_node("mcl_brewing:stand_010", { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_destruct = after_dig, + on_destruct = on_destruct, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -664,7 +669,7 @@ minetest.register_node("mcl_brewing:stand_001", { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_destruct = after_dig, + on_destruct = on_destruct, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -748,7 +753,7 @@ minetest.register_node("mcl_brewing:stand_110", { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_destruct = after_dig, + on_destruct = on_destruct, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -832,7 +837,7 @@ minetest.register_node("mcl_brewing:stand_101", { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_destruct = after_dig, + on_destruct = on_destruct, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -916,7 +921,7 @@ minetest.register_node("mcl_brewing:stand_011", { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_destruct = after_dig, + on_destruct = on_destruct, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, @@ -1000,7 +1005,7 @@ minetest.register_node("mcl_brewing:stand_111", { sounds = mcl_sounds.node_sound_metal_defaults(), _mcl_blast_resistance = 1, _mcl_hardness = 1, - on_destruct = after_dig, + on_destruct = on_destruct, after_dig_node = after_dig, allow_metadata_inventory_take = allow_take, allow_metadata_inventory_put = allow_put, From b75075a1350d5a828f6a2f48b6dc6823ac303f1e Mon Sep 17 00:00:00 2001 From: Brandon Date: Tue, 23 Jun 2020 17:57:11 -0400 Subject: [PATCH 064/108] Correct ability to kill players with harm potions. --- mods/ITEMS/mcl_potions/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index a2e7befc59..45900c4d51 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -314,7 +314,7 @@ function mcl_potions.healing_func(player, hp) if hp > 0 then player:set_hp(math.min(player:get_hp() + hp, player:get_properties().hp_max)) else - player:set_hp(math.max(player:get_hp() + hp, 1)) + player:set_hp(player:get_hp() + hp) end end From d632cf289c6b85f19ff33e9ea007399ad12dc394 Mon Sep 17 00:00:00 2001 From: Brandon Date: Tue, 23 Jun 2020 18:17:30 -0400 Subject: [PATCH 065/108] Add smooth FOV transition when sprinting --- mods/PLAYER/mcl_sprint/init.lua | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/mods/PLAYER/mcl_sprint/init.lua b/mods/PLAYER/mcl_sprint/init.lua index efd39ae607..02e4a65f5b 100644 --- a/mods/PLAYER/mcl_sprint/init.lua +++ b/mods/PLAYER/mcl_sprint/init.lua @@ -2,9 +2,9 @@ Sprint mod for Minetest by GunshipPenguin To the extent possible under law, the author(s) -have dedicated all copyright and related and neighboring rights +have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is -distributed without any warranty. +distributed without any warranty. ]] --Configuration variables, these are all explained in README.md @@ -29,10 +29,11 @@ minetest.register_on_joinplayer(function(player) players[playerName] = { sprinting = false, - timeOut = 0, + timeOut = 0, shouldSprint = false, lastPos = player:get_pos(), sprintDistance = 0, + fov = 1.0 } end) minetest.register_on_leaveplayer(function(player) @@ -43,10 +44,14 @@ end) local function setSprinting(playerName, sprinting) --Sets the state of a player (0=stopped/moving, 1=sprinting) local player = minetest.get_player_by_name(playerName) if players[playerName] then - players[playerName]["sprinting"] = sprinting + players[playerName].sprinting = sprinting if sprinting == true then + players[playerName].fov = math.min(players[playerName].fov + 0.02, 1.2) + player:set_fov(players[playerName].fov, true, 0.15) playerphysics.add_physics_factor(player, "speed", "mcl_sprint:sprint", mcl_sprint.SPEED) elseif sprinting == false then + players[playerName].fov = math.max(players[playerName].fov - 0.02, 1.0) + player:set_fov(players[playerName].fov, true, 0.15) playerphysics.remove_physics_factor(player, "speed", "mcl_sprint:sprint") end return true @@ -68,7 +73,7 @@ minetest.register_globalstep(function(dtime) else players[playerName]["shouldSprint"] = false end - + local playerPos = player:get_pos() --If the player is sprinting, create particles behind and cause exhaustion if playerInfo["sprinting"] == true and gameTime % 0.1 == 0 then @@ -117,7 +122,7 @@ minetest.register_globalstep(function(dtime) elseif players[playerName]["shouldSprint"] == false then setSprinting(playerName, false) end - + end end end) From fceffa6f1c92f9d63daa656f856212b3b2dbe6a2 Mon Sep 17 00:00:00 2001 From: Brandon Date: Tue, 23 Jun 2020 21:36:55 -0400 Subject: [PATCH 066/108] Smooth out FOV changes, add specificity to potion effects to avoid overlap --- mods/ITEMS/mcl_potions/functions.lua | 23 +++++++++++++---------- mods/PLAYER/mcl_sprint/init.lua | 4 ++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 45900c4d51..23e957e3d0 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -124,7 +124,7 @@ minetest.register_globalstep(function(dtime) if player:get_pos() then mcl_potions._add_spawner(player, "#00CC33") end if is_leaping[player].timer >= is_leaping[player].dur then - playerphysics.remove_physics_factor(player, "jump", "leaping") + playerphysics.remove_physics_factor(player, "jump", "mcl_potions:leaping") is_leaping[player] = nil end @@ -146,7 +146,7 @@ minetest.register_globalstep(function(dtime) if player:get_pos() then mcl_potions._add_spawner(player, "#009999") end if is_swift[player].timer >= is_swift[player].dur then - playerphysics.remove_physics_factor(player, "speed", "swiftness") + playerphysics.remove_physics_factor(player, "speed", "mcl_potions:swiftness") is_swift[player] = nil end @@ -178,10 +178,9 @@ minetest.register_globalstep(function(dtime) end -end ) +end) --- reset player is_invisible/poison if they go offline -minetest.register_on_leaveplayer(function(player) +local function _reset_player_effects(player) player = player or player:get_luaentity() @@ -221,7 +220,11 @@ minetest.register_on_leaveplayer(function(player) is_cat[player] = nil end -end) +end + +minetest.register_on_leaveplayer( function(player) _reset_player_effects(player) end) + +minetest.register_on_dieplayer( function(player) _reset_player_effects(player) end) function mcl_potions.make_invisible(player, toggle) @@ -326,13 +329,13 @@ function mcl_potions.swiftness_func(player, factor, duration) if not is_swift[player] then is_swift[player] = {dur = duration, timer = 0} - playerphysics.add_physics_factor(player, "speed", "swiftness", factor) + playerphysics.add_physics_factor(player, "speed", "mcl_potions:swiftness", factor) else local victim = is_swift[player] - playerphysics.add_physics_factor(player, "speed", "swiftness", factor) + playerphysics.add_physics_factor(player, "speed", "mcl_potions:swiftness", factor) victim.dur = math.max(duration, victim.dur - victim.timer) victim.timer = 0 @@ -347,13 +350,13 @@ function mcl_potions.leaping_func(player, factor, duration) if not is_leaping[player] then is_leaping[player] = {dur = duration, timer = 0} - playerphysics.add_physics_factor(player, "jump", "leaping", factor) + playerphysics.add_physics_factor(player, "jump", "mcl_potions:leaping", factor) else local victim = is_leaping[player] - playerphysics.add_physics_factor(player, "jump", "leaping", factor) + playerphysics.add_physics_factor(player, "jump", "mcl_potions:leaping", factor) victim.dur = math.max(duration, victim.dur - victim.timer) victim.timer = 0 diff --git a/mods/PLAYER/mcl_sprint/init.lua b/mods/PLAYER/mcl_sprint/init.lua index 02e4a65f5b..46eac2a843 100644 --- a/mods/PLAYER/mcl_sprint/init.lua +++ b/mods/PLAYER/mcl_sprint/init.lua @@ -46,11 +46,11 @@ local function setSprinting(playerName, sprinting) --Sets the state of a player if players[playerName] then players[playerName].sprinting = sprinting if sprinting == true then - players[playerName].fov = math.min(players[playerName].fov + 0.02, 1.2) + players[playerName].fov = math.min(players[playerName].fov + 0.03, 1.2) player:set_fov(players[playerName].fov, true, 0.15) playerphysics.add_physics_factor(player, "speed", "mcl_sprint:sprint", mcl_sprint.SPEED) elseif sprinting == false then - players[playerName].fov = math.max(players[playerName].fov - 0.02, 1.0) + players[playerName].fov = math.max(players[playerName].fov - 0.03, 1.0) player:set_fov(players[playerName].fov, true, 0.15) playerphysics.remove_physics_factor(player, "speed", "mcl_sprint:sprint") end From 1d5a04acb3465bfba83095d19c15b04df41acbd6 Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 25 Jun 2020 19:21:16 -0400 Subject: [PATCH 067/108] Update to reset player_physics on log out or death. Fix mobs die with potions. --- mods/ITEMS/mcl_potions/functions.lua | 36 +++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 23e957e3d0..c238f00114 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -46,8 +46,15 @@ minetest.register_globalstep(function(dtime) if player:get_pos() then mcl_potions._add_spawner(player, "#225533") end if is_poisoned[player].hit_timer >= is_poisoned[player].step then - player:set_hp( math.max(player:get_hp() - 1, 1) ) + + if player._cmi_is_mob then + player.health = math.max(player.health - 1, 1) + else + player:set_hp( math.max(player:get_hp() - 1, 1) ) + end + is_poisoned[player].hit_timer = 0 + end if is_poisoned[player].timer >= is_poisoned[player].dur then @@ -210,10 +217,12 @@ local function _reset_player_effects(player) if is_leaping[player] then is_leaping[player] = nil + playerphysics.remove_physics_factor(player, "jump", "mcl_potions:leaping") end if is_swift[player] then is_swift[player] = nil + playerphysics.remove_physics_factor(player, "speed", "mcl_potions:swiftness") end if is_cat[player] then @@ -312,12 +321,33 @@ end function mcl_potions.healing_func(player, hp) + obj = player:get_luaentity() + if is_zombie[player:get_entity_name()] then hp = -hp end if hp > 0 then - player:set_hp(math.min(player:get_hp() + hp, player:get_properties().hp_max)) + + if obj and obj._cmi_is_mob then + obj.health = math.max(obj.health + hp, obj.hp_max) + else + player:set_hp(math.min(player:get_hp() + hp, player:get_properties().hp_max)) + end + else - player:set_hp(player:get_hp() + hp) + + if obj and obj._cmi_is_mob then + obj.health = obj.health + hp + else + player:set_hp(player:get_hp() + hp) + end + + end + + -- adjust mob health + obj = player:get_luaentity() + if obj and obj._cmi_is_mob then + print("working "..obj.health) + obj.health = obj.health + hp end end From 4a35ad3fd1e1021b269d29ab45b90c477d5338c3 Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 26 Jun 2020 16:55:22 -0400 Subject: [PATCH 068/108] Correct issue where all items are replaced with drinking potions in creative --- mods/ITEMS/mcl_potions/functions.lua | 1 - mods/ITEMS/mcl_potions/potions.lua | 115 +++++++++++++++++++-------- mods/PLAYER/mcl_sprint/init.lua | 4 +- 3 files changed, 86 insertions(+), 34 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index c238f00114..f20c46eac4 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -267,7 +267,6 @@ end function mcl_potions._use_potion(item, obj, color) local d = 0.1 local pos = obj:get_pos() - item:replace("mcl_potions:glass_bottle") minetest.sound_play("mcl_potions_drinking", {pos = pos, max_hear_distance = 6, gain = 1}) minetest.add_particlespawner({ amount = 25, diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index 26036e146b..0f387f2a33 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -18,7 +18,6 @@ minetest.register_craftitem("mcl_potions:awkward", { stack_max = 1, inventory_image = potion_image("#0000FF"), wield_image = potion_image("#0000FF"), - -- TODO: Reveal item when it's actually useful groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=1}, on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"), on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), @@ -32,7 +31,6 @@ minetest.register_craftitem("mcl_potions:mundane", { stack_max = 1, inventory_image = potion_image("#0000FF"), wield_image = potion_image("#0000FF"), - -- TODO: Reveal item when it's actually useful groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=1 }, on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"), on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), @@ -46,7 +44,6 @@ minetest.register_craftitem("mcl_potions:thick", { stack_max = 1, inventory_image = potion_image("#0000FF"), wield_image = potion_image("#0000FF"), - -- TODO: Reveal item when it's actually useful groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"), on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), @@ -68,17 +65,19 @@ minetest.register_craftitem("mcl_potions:healing", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#CC0000"), inventory_image = potion_image("#CC0000"), - groups = { brewitem = 1, food=3, can_eat_when_full=1 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 4) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#CC0000") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 4) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#CC0000") return itemstack end, @@ -89,17 +88,19 @@ minetest.register_craftitem("mcl_potions:healing_2", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#DD0000"), inventory_image = potion_image("#DD0000"), - groups = { brewitem = 1, food=3, can_eat_when_full=1 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 8) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#DD0000") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, 8) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#DD0000") return itemstack end, @@ -111,17 +112,19 @@ minetest.register_craftitem("mcl_potions:harming", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#660099"), inventory_image = potion_image("#660099"), - groups = { brewitem = 1, food=3, can_eat_when_full=1 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -6) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#660099") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -6) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#660099") return itemstack end, @@ -132,17 +135,19 @@ minetest.register_craftitem("mcl_potions:harming_2", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#330066"), inventory_image = potion_image("#330066"), - groups = { brewitem = 1, food=3, can_eat_when_full=1 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -12) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#330066") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.healing_func(user, -12) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#330066") return itemstack end, @@ -154,17 +159,19 @@ minetest.register_craftitem("mcl_potions:night_vision", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#1010AA"), inventory_image = potion_image("#1010AA"), - groups = { brewitem = 1, food=0}, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.night_vision_func(user, 180) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#1010AA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.night_vision_func(user, 180) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#1010AA") return itemstack end, @@ -175,17 +182,19 @@ minetest.register_craftitem("mcl_potions:night_vision_plus", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#2020BA"), inventory_image = potion_image("#2020BA"), - groups = { brewitem = 1, food=0}, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.night_vision_func(user, 480) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#2020BA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.night_vision_func(user, 480) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#2020BA") return itemstack end, @@ -197,17 +206,19 @@ minetest.register_craftitem("mcl_potions:swiftness", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#009999"), inventory_image = potion_image("#009999"), - groups = { brewitem = 1, food=0}, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 180) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#009999") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 180) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#009999") return itemstack end, @@ -218,17 +229,19 @@ minetest.register_craftitem("mcl_potions:swiftness_2", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#00BBBB"), inventory_image = potion_image("#00BBBB"), - groups = { brewitem = 1, food=0}, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.4, 90) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00BBBB") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.4, 90) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00BBBB") return itemstack end, @@ -239,17 +252,19 @@ minetest.register_craftitem("mcl_potions:swiftness_plus", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#00AAAA"), inventory_image = potion_image("#00AAAA"), - groups = { brewitem = 1, food=0}, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 480) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00AAAA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 1.2, 480) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00AAAA") return itemstack end, @@ -260,17 +275,19 @@ minetest.register_craftitem("mcl_potions:slowness", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#000080"), inventory_image = potion_image("#000080"), - groups = { brewitem = 1, food=0}, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 90) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#000080") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 90) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#000080") return itemstack end, @@ -281,17 +298,19 @@ minetest.register_craftitem("mcl_potions:slowness_plus", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#000066"), inventory_image = potion_image("#000066"), - groups = { brewitem = 1, food=0}, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 240) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#000066") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.swiftness_func(user, 0.85, 240) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#000066") return itemstack end, @@ -303,17 +322,19 @@ minetest.register_craftitem("mcl_potions:leaping", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#00CC33"), inventory_image = potion_image("#00CC33"), - groups = { brewitem = 1, food=0}, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 180) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00CC33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 180) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00CC33") return itemstack end, @@ -324,17 +345,19 @@ minetest.register_craftitem("mcl_potions:leaping_2", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#00EE33"), inventory_image = potion_image("#00EE33"), - groups = { brewitem = 1, food=0}, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.4, 90) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00EE33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.4, 90) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00EE33") return itemstack end, @@ -345,17 +368,19 @@ minetest.register_craftitem("mcl_potions:leaping_plus", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#00DD33"), inventory_image = potion_image("#00DD33"), - groups = { brewitem = 1, food=0}, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 480) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00DD33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.leaping_func(user, 1.2, 480) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00DD33") return itemstack end, @@ -367,17 +392,19 @@ minetest.register_craftitem("mcl_potions:weakness", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#6600AA"), inventory_image = potion_image("#6600AA"), - groups = { brewitem = 1, food=0}, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.weakness_func(user, 1.2, 90) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#6600AA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.weakness_func(user, 1.2, 90) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#6600AA") return itemstack end @@ -388,17 +415,19 @@ minetest.register_craftitem("mcl_potions:weakness_plus", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#7700BB"), inventory_image = potion_image("#7700BB"), - groups = { brewitem = 1, food=0}, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.weakness_func(user, 1.4, 240) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#7700BB") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.weakness_func(user, 1.4, 240) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#7700BB") return itemstack end @@ -410,17 +439,19 @@ minetest.register_craftitem("mcl_potions:poison", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#225533"), inventory_image = potion_image("#225533"), - groups = { brewitem = 1, food = 0 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 45) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#225533") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 45) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#225533") return itemstack end @@ -431,17 +462,19 @@ minetest.register_craftitem("mcl_potions:poison_2", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#447755"), inventory_image = potion_image("#447755"), - groups = { brewitem = 1, food = 0 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 1.2, 21) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#447755") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 1.2, 21) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#447755") return itemstack end @@ -452,17 +485,19 @@ minetest.register_craftitem("mcl_potions:poison_plus", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#336644"), inventory_image = potion_image("#336644"), - groups = { brewitem = 1, food = 0 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 90) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#336644") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.poison_func(user, 2.5, 90) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#336644") return itemstack end @@ -474,17 +509,19 @@ minetest.register_craftitem("mcl_potions:regeneration", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#A52BB2"), inventory_image = potion_image("#A52BB2"), - groups = { brewitem = 1, food = 0 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 45) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#A52BB2") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 45) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#A52BB2") return itemstack end @@ -495,17 +532,19 @@ minetest.register_craftitem("mcl_potions:regeneration_2", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#B52CC2"), inventory_image = potion_image("#B52CC2"), - groups = { brewitem = 1, food = 0 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 1.2, 22) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#B52CC2") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 1.2, 22) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#B52CC2") return itemstack end @@ -516,17 +555,19 @@ minetest.register_craftitem("mcl_potions:regeneration_plus", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#C53DD3"), inventory_image = potion_image("#C53DD3"), - groups = { brewitem = 1, food = 0 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 90) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#C53DD3") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.regeneration_func(user, 2.5, 90) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#C53DD3") return itemstack end @@ -538,17 +579,19 @@ minetest.register_craftitem("mcl_potions:invisibility", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#B0B0B0"), inventory_image = potion_image("#B0B0B0"), - groups = { brewitem = 1, food = 0 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 180) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#B0B0B0") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 180) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#B0B0B0") return itemstack end @@ -559,17 +602,19 @@ minetest.register_craftitem("mcl_potions:invisibility_plus", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#A0A0A0"), inventory_image = potion_image("#A0A0A0"), - groups = { brewitem = 1, food = 0 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 480) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#A0A0A0") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.invisiblility_func(user, 480) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#A0A0A0") return itemstack end @@ -588,17 +633,19 @@ minetest.register_craftitem("mcl_potions:water_breathing", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#0000AA"), inventory_image = potion_image("#0000AA"), - groups = { brewitem = 1, food = 0 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.water_breathing_func(user, 180) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#0000AA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.water_breathing_func(user, 180) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#0000AA") return itemstack end @@ -609,17 +656,19 @@ minetest.register_craftitem("mcl_potions:water_breathing_plus", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#0000CC"), inventory_image = potion_image("#0000CC"), - groups = { brewitem = 1, food = 0 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.water_breathing_func(user, 480) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#0000CC") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.water_breathing_func(user, 480) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#0000CC") return itemstack end @@ -631,17 +680,19 @@ minetest.register_craftitem("mcl_potions:fire_resistance", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#D0A040"), inventory_image = potion_image("#D0A040"), - groups = { brewitem = 1, food = 0 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.fire_resistance_func(user, 180) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#D0A040") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.fire_resistance_func(user, 180) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#D0A040") return itemstack end @@ -652,17 +703,19 @@ minetest.register_craftitem("mcl_potions:fire_resistance_plus", { _doc_items_longdesc = brewhelp, wield_image = potion_image("#E0B050"), inventory_image = potion_image("#E0B050"), - groups = { brewitem = 1, food = 0 }, + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, stack_max = 1, on_place = function(itemstack, user, pointed_thing) mcl_potions.fire_resistance_func(user, 480) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#E0B050") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) mcl_potions.fire_resistance_func(user, 480) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#E0B050") return itemstack end diff --git a/mods/PLAYER/mcl_sprint/init.lua b/mods/PLAYER/mcl_sprint/init.lua index 46eac2a843..be0fdf4f40 100644 --- a/mods/PLAYER/mcl_sprint/init.lua +++ b/mods/PLAYER/mcl_sprint/init.lua @@ -46,11 +46,11 @@ local function setSprinting(playerName, sprinting) --Sets the state of a player if players[playerName] then players[playerName].sprinting = sprinting if sprinting == true then - players[playerName].fov = math.min(players[playerName].fov + 0.03, 1.2) + players[playerName].fov = math.min(players[playerName].fov + 0.05, 1.2) player:set_fov(players[playerName].fov, true, 0.15) playerphysics.add_physics_factor(player, "speed", "mcl_sprint:sprint", mcl_sprint.SPEED) elseif sprinting == false then - players[playerName].fov = math.max(players[playerName].fov - 0.03, 1.0) + players[playerName].fov = math.max(players[playerName].fov - 0.05, 1.0) player:set_fov(players[playerName].fov, true, 0.15) playerphysics.remove_physics_factor(player, "speed", "mcl_sprint:sprint") end From 8a08d27ee5bff46d23f6189a542bd593ddfe238b Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 26 Jun 2020 19:08:41 -0400 Subject: [PATCH 069/108] Fix potions to hit mobs. --- mods/ITEMS/mcl_potions/functions.lua | 17 +++++++++++++++++ mods/ITEMS/mcl_potions/lingering.lua | 6 ++++-- mods/ITEMS/mcl_potions/splash.lua | 7 +++++-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index f20c46eac4..d78f2fbfeb 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -235,6 +235,23 @@ minetest.register_on_leaveplayer( function(player) _reset_player_effects(player) minetest.register_on_dieplayer( function(player) _reset_player_effects(player) end) +function mcl_potions.is_obj_hit(self, pos) + + for _,object in pairs(minetest.get_objects_inside_radius(pos, 1.1)) do + + local entity = object:get_luaentity() + + if entity and entity.name ~= self.object:get_luaentity().name then + + if object:is_player() or entity._cmi_is_mob then return true end + + end + + end + return false +end + + function mcl_potions.make_invisible(player, toggle) if not player then return false end diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 26b5c3c12b..cd99e85b1f 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -19,7 +19,9 @@ local function register_lingering(name, descr, color, def) local obj = minetest.env:add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying") obj:setvelocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity}) obj:setacceleration({x=0, y=-9.8, z=0}) - item:take_item() + if not minetest.settings:get_bool("creative_mode") then + item:take_item() + end return item end, stack_max = 1, @@ -38,7 +40,7 @@ local function register_lingering(name, descr, color, def) local n = node.name local d = 2 local redux_map = {7/8,0.5,0.25} - if n ~= "air" then + if n ~= "air" or mcl_potions.is_obj_hit(self, pos) then minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1}) minetest.add_particlespawner({ amount = 1000, diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index d1d2708db7..4745881b9a 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -5,6 +5,7 @@ local splash_image = function(colorstring, opacity) return "mcl_potions_splash_overlay.png^[colorize:"..colorstring..":"..tostring(opacity).."^mcl_potions_splash_bottle.png" end + local function register_splash(name, descr, color, def) local id = "mcl_potions:"..name.."_splash" @@ -18,7 +19,9 @@ local function register_splash(name, descr, color, def) local obj = minetest.env:add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying") obj:set_velocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity}) obj:set_acceleration({x=0, y=-9.8, z=0}) - item:take_item() + if not minetest.settings:get_bool("creative_mode") then + item:take_item() + end return item end, stack_max = 1, @@ -37,7 +40,7 @@ local function register_splash(name, descr, color, def) local n = node.name local d = 2 local redux_map = {7/8,0.5,0.25} - if n ~= "air" then + if n ~= "air" or mcl_potions.is_obj_hit(self, pos) then minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1}) minetest.add_particlespawner({ amount = 50, From 487909e8ebe912487abb5053d223aeafbda969bc Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 26 Jun 2020 20:32:03 -0400 Subject: [PATCH 070/108] Generate lingering functions. --- mods/ITEMS/mcl_potions/lingering.lua | 159 +++++++++++++++++---------- mods/ITEMS/mcl_potions/splash.lua | 8 +- 2 files changed, 104 insertions(+), 63 deletions(-) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index cd99e85b1f..ba8f43da6a 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -5,6 +5,74 @@ local lingering_image = function(colorstring, opacity) return "mcl_potions_splash_overlay.png^[colorize:"..colorstring..":"..tostring(opacity).."^mcl_potions_splash_bottle.png" end + +local lingering_effect_at = {} + +local function add_lingering_effect(pos, color, def) + + lingering_effect_at[pos] = {color = color, timer = 30, def = def} + + local timer = 0 + + minetest.register_globalstep(function(dtime) + + timer = timer + dtime + + if timer >= 0.5 then + + for pos, vals in pairs(lingering_effect_at) do + + if lingering_effect_at[pos] then + + lingering_effect_at[pos].timer = lingering_effect_at[pos].timer - timer + + if lingering_effect_at[pos].timer > 0 then + + local d = 3 * (lingering_effect_at[pos].timer / 30.0) + + minetest.add_particlespawner({ + amount = 5 * math.ceil(d)^2, + time = 1, + minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d}, + maxpos = {x=pos.x+d, y=pos.y+1, z=pos.z+d}, + minvel = {x=-0.5, y=0, z=-0.5}, + maxvel = {x=0.5, y=0.5, z=0.5}, + minacc = {x=-0.2, y=0, z=-0.2}, + maxacc = {x=0.2, y=.05, z=0.2}, + minexptime = 1, + maxexptime = 2, + minsize = 2, + maxsize = 4, + collisiondetection = true, + vertical = false, + texture = "mcl_potions_sprite.png^[colorize:"..lingering_effect_at[pos].color..":127", + }) + + for i, obj in ipairs(minetest.get_objects_inside_radius(pos, math.ceil(d+1))) do + + obj = obj or obj:get_luaentity() + + if minetest.is_player(obj) or obj._cmi_is_mob then + + lingering_effect_at[pos].def.potion_fun(obj) + lingering_effect_at[pos].timer = lingering_effect_at[pos].timer / 2 + + end + end + + else + lingering_effect_at[pos] = nil + end + end + end + timer = 0 + end + end) + +end + + + local function register_lingering(name, descr, color, def) local id = "mcl_potions:"..name.."_lingering" @@ -12,7 +80,6 @@ local function register_lingering(name, descr, color, def) description = descr, inventory_image = lingering_image(color), on_use = function(item, placer, pointed_thing) - --weapons_shot(itemstack, placer, pointed_thing, def.velocity, name) local velocity = 10 local dir = placer:get_look_dir(); local pos = placer:getpos(); @@ -24,7 +91,7 @@ local function register_lingering(name, descr, color, def) end return item end, - stack_max = 1, + stack_max = 1, }) local w = 0.7 @@ -39,147 +106,119 @@ local function register_lingering(name, descr, color, def) local node = minetest.get_node(pos) local n = node.name local d = 2 - local redux_map = {7/8,0.5,0.25} - if n ~= "air" or mcl_potions.is_obj_hit(self, pos) then + if n ~= "air" or mcl_potions.is_obj_hit(self, pos) then minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1}) - minetest.add_particlespawner({ - amount = 1000, - time = 30, - minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d}, - maxpos = {x=pos.x+d, y=pos.y+d, z=pos.z+d}, - minvel = {x=-0.5, y=0, z=-0.5}, - maxvel = {x=0.5, y=0.5, z=0.5}, - minacc = {x=-0.2, y=0, z=-0.2}, - maxacc = {x=0.2, y=.05, z=0.2}, - minexptime = 1, - maxexptime = 2, - minsize = 2, - maxsize = 4, - collisiondetection = true, - vertical = false, - texture = "mcl_potions_sprite.png^[colorize:"..color..":127", - }) - self.object:remove() - for i, obj in ipairs(minetest.get_objects_inside_radius(pos, 4)) do - - if minetest.is_player(obj) or obj:get_entity_name() then - - pos2 = obj:get_pos() - local rad = math.floor(math.sqrt((pos2.x-pos.x)^2 + (pos2.y-pos.y)^2 + (pos2.z-pos.z)^2)) - if rad > 0 then def.potion_fun(obj, redux_map[rad]) else def.potion_fun(obj, 1) end - - end - end - + add_lingering_effect(pos, color, def) + self.object:remove() end end, }) end register_lingering("water", "Lingering Potion", "#0000FF", { - potion_fun = function(player, redx) end, + potion_fun = function(player) end, }) register_lingering("river_water", "Lingering Potion", "#0000FF", { - potion_fun = function(player, redx) end, + potion_fun = function(player) end, }) register_lingering("awkward", "Lingering Awkward Potion", "#0000FF", { - potion_fun = function(player, redx) end, + potion_fun = function(player) end, }) register_lingering("mundane", "Lingering Mundane Potion", "#0000FF", { - potion_fun = function(player, redx) end, + potion_fun = function(player) end, }) register_lingering("thick", "Lingering Thick Potion", "#0000FF", { - potion_fun = function(player, redx) end, + potion_fun = function(player) end, }) register_lingering("healing", "Lingering Healing", "#AA0000", { - potion_fun = function(player, redx) player:set_hp(player:get_hp() + 3*redx) end, + potion_fun = function(player) player:set_hp(player:get_hp() + 3*0.5) end, }) register_lingering("healing_2", "Lingering Healing II", "#DD0000", { - potion_fun = function(player, redx) player:set_hp(player:get_hp() + 6*redx) end, + potion_fun = function(player, redx) player:set_hp(player:get_hp() + 6*0.5) end, }) register_lingering("harming", "Lingering Harming", "#660099", { - potion_fun = function(player, redx) mcl_potions.healing_func(player, -4*redx) end, + potion_fun = function(player, redx) mcl_potions.healing_func(player, -4*0.5) end, }) register_lingering("harming_2", "Lingering Harming II", "#330066", { - potion_fun = function(player, redx) mcl_potions.healing_func(player, -6*redx) end, + potion_fun = function(player, redx) mcl_potions.healing_func(player, -6*0.5) end, }) register_lingering("leaping", "Lingering Leaping", "#00CC33", { - potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, 135*redx) end + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, 135*0.25) end }) register_lingering("leaping_2", "Lingering Leaping II", "#00EE33", { - potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.4, 135*redx) end + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.4, 135*0.25) end }) register_lingering("leaping_plus", "Lingering Leaping +", "#00DD33", { - potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, 360*redx) end + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, 360*0.25) end }) register_lingering("swiftness", "Lingering Swiftness", "#009999", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 135*redx) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 135*0.25) end }) register_lingering("swiftness_2", "Lingering Swiftness II", "#00BBBB", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.4, 135*redx) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.4, 135*0.25) end }) register_lingering("swiftness_plus", "Lingering Swiftness +", "#00BBBB", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 360*redx) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 360*0.25) end }) register_lingering("slowness", "Lingering Slowness ", "#000080", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 68*redx) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 68*0.25) end }) register_lingering("slowness_plus", "Lingering Slowness +", "#000066", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 180*redx) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 180*0.25) end }) register_lingering("poison", "Lingering Poison", "#335544", { - potion_fun = function(player, redx) mcl_potions.poison_func(player, 2.5, 45*redx) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 2.5, 45*0.25) end }) register_lingering("poison_2", "Lingering Poison II", "#446655", { - potion_fun = function(player, redx) mcl_potions.poison_func(player, 1.2, 21*redx) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 1.2, 21*0.25) end }) register_lingering("poison_plus", "Lingering Poison +", "#557766", { - potion_fun = function(player, redx) mcl_potions.poison_func(player, 2.5, 90*redx) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 2.5, 90*0.25) end }) register_lingering("regeneration", "Lingering Regeneration", "#A52BB2", { - potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 2.5, 45*redx) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 2.5, 45*0.25) end }) register_lingering("regeneration_2", "Lingering Regeneration II", "#B52CC2", { - potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 1.2, 21*redx) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 1.2, 21*0.25) end }) register_lingering("regeneration_plus", "Lingering Regeneration +", "#C53DD3", { - potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 2.5, 90*redx) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 2.5, 90*0.25) end }) register_lingering("invisibility", "Lingering Invisibility", "#B0B0B0", { - potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 135*redx) end + potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 135*0.25) end }) register_lingering("invisibility_plus", "Lingering Invisibility +", "#A0A0A0", { - potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 300*redx) end + potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 300*0.25) end }) register_lingering("weakness", "Lingering Weakness", "#6600AA", { - potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.2, 68*redx) end + potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.2, 68*0.25) end }) register_lingering("weakness_plus", "Lingering Weakness +", "#7700BB", { - potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.4, 180*redx) end + potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.4, 180*0.25) end }) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 4745881b9a..eb48263726 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -40,7 +40,7 @@ local function register_splash(name, descr, color, def) local n = node.name local d = 2 local redux_map = {7/8,0.5,0.25} - if n ~= "air" or mcl_potions.is_obj_hit(self, pos) then + if n ~= "air" or mcl_potions.is_obj_hit(self, pos) then minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1}) minetest.add_particlespawner({ amount = 50, @@ -59,10 +59,12 @@ local function register_splash(name, descr, color, def) vertical = false, texture = "mcl_potions_sprite.png^[colorize:"..color..":127", }) - self.object:remove() + self.object:remove() for i, obj in ipairs(minetest.get_objects_inside_radius(pos, 4)) do - if minetest.is_player(obj) or obj:get_entity_name() then + obj = obj or obj:get_luaentity() + + if minetest.is_player(obj) or obj._cmi_is_mob then local pos2 = obj:get_pos() local rad = math.floor(math.sqrt((pos2.x-pos.x)^2 + (pos2.y-pos.y)^2 + (pos2.z-pos.z)^2)) From 4f259dec712b5993d430e25e82d59cf9535ef09e Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 26 Jun 2020 21:27:17 -0400 Subject: [PATCH 071/108] Adjust lingering affect (1 per second) --- mods/ITEMS/mcl_potions/functions.lua | 2 -- mods/ITEMS/mcl_potions/lingering.lua | 36 ++++++++++++++++++++++------ mods/ITEMS/mcl_potions/splash.lua | 8 +++---- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index d78f2fbfeb..89ff1b531a 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -362,7 +362,6 @@ function mcl_potions.healing_func(player, hp) -- adjust mob health obj = player:get_luaentity() if obj and obj._cmi_is_mob then - print("working "..obj.health) obj.health = obj.health + hp end @@ -413,7 +412,6 @@ end function mcl_potions.weakness_func(player, factor, duration) player:set_attribute("weakness", tostring(factor)) - -- print(player:get_player_name().." ".."weakness = "..player:get_attribute("weakness")) minetest.after(duration, function() player:set_attribute("weakness", tostring(0)) end ) for i=1,math.floor(duration) do minetest.after(i, function() mcl_potions._add_spawner(player, "#6600AA") end) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index ba8f43da6a..9732ae07dc 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -18,7 +18,7 @@ local function add_lingering_effect(pos, color, def) timer = timer + dtime - if timer >= 0.5 then + if timer >= 1 then for pos, vals in pairs(lingering_effect_at) do @@ -26,12 +26,14 @@ local function add_lingering_effect(pos, color, def) lingering_effect_at[pos].timer = lingering_effect_at[pos].timer - timer + -- print(lingering_effect_at[pos].timer) + if lingering_effect_at[pos].timer > 0 then - local d = 3 * (lingering_effect_at[pos].timer / 30.0) + local d = 4 * (lingering_effect_at[pos].timer / 30.0) minetest.add_particlespawner({ - amount = 5 * math.ceil(d)^2, + amount = 5 * d^2, time = 1, minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d}, maxpos = {x=pos.x+d, y=pos.y+1, z=pos.z+d}, @@ -48,11 +50,14 @@ local function add_lingering_effect(pos, color, def) texture = "mcl_potions_sprite.png^[colorize:"..lingering_effect_at[pos].color..":127", }) - for i, obj in ipairs(minetest.get_objects_inside_radius(pos, math.ceil(d+1))) do + for _, obj in pairs(minetest.get_objects_inside_radius(pos, d)) do - obj = obj or obj:get_luaentity() + local entity = obj:get_luaentity() - if minetest.is_player(obj) or obj._cmi_is_mob then + if obj:is_player() or entity._cmi_is_mob then + + -- if obj:is_player() then print(obj:is_player()) print(obj:get_player_name()) end + -- if entity then print(entity.name) print(entity._cmi_is_mob) end lingering_effect_at[pos].def.potion_fun(obj) lingering_effect_at[pos].timer = lingering_effect_at[pos].timer / 2 @@ -105,10 +110,27 @@ local function register_lingering(name, descr, color, def) local pos = self.object:getpos() local node = minetest.get_node(pos) local n = node.name - local d = 2 + local d = 4 if n ~= "air" or mcl_potions.is_obj_hit(self, pos) then minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1}) add_lingering_effect(pos, color, def) + minetest.add_particlespawner({ + amount = 20, + time = 1, + minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d}, + maxpos = {x=pos.x+d, y=pos.y+1, z=pos.z+d}, + minvel = {x=-0.5, y=0, z=-0.5}, + maxvel = {x=0.5, y=0.5, z=0.5}, + minacc = {x=-0.2, y=0, z=-0.2}, + maxacc = {x=0.2, y=.05, z=0.2}, + minexptime = 1, + maxexptime = 2, + minsize = 1, + maxsize = 2, + collisiondetection = true, + vertical = false, + texture = "mcl_potions_sprite.png^[colorize:"..lingering_effect_at[pos].color..":127", + }) self.object:remove() end end, diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index eb48263726..68da6affa7 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -60,11 +60,9 @@ local function register_splash(name, descr, color, def) texture = "mcl_potions_sprite.png^[colorize:"..color..":127", }) self.object:remove() - for i, obj in ipairs(minetest.get_objects_inside_radius(pos, 4)) do - - obj = obj or obj:get_luaentity() - - if minetest.is_player(obj) or obj._cmi_is_mob then + for _,obj in pairs(minetest.get_objects_inside_radius(pos, 4)) do + + if obj:is_player() or entity._cmi_is_mob then local pos2 = obj:get_pos() local rad = math.floor(math.sqrt((pos2.x-pos.x)^2 + (pos2.y-pos.y)^2 + (pos2.z-pos.z)^2)) From bd9b15466b3ef0eb906e29ba6a590b0cdcb24e09 Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 26 Jun 2020 21:30:35 -0400 Subject: [PATCH 072/108] Correct splash issue with mob-detection --- mods/ITEMS/mcl_potions/lingering.lua | 1 - mods/ITEMS/mcl_potions/splash.lua | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 9732ae07dc..28f524922b 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -53,7 +53,6 @@ local function add_lingering_effect(pos, color, def) for _, obj in pairs(minetest.get_objects_inside_radius(pos, d)) do local entity = obj:get_luaentity() - if obj:is_player() or entity._cmi_is_mob then -- if obj:is_player() then print(obj:is_player()) print(obj:get_player_name()) end diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 68da6affa7..3a2550cadc 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -61,7 +61,8 @@ local function register_splash(name, descr, color, def) }) self.object:remove() for _,obj in pairs(minetest.get_objects_inside_radius(pos, 4)) do - + + local entity = obj.get_luaentity() if obj:is_player() or entity._cmi_is_mob then local pos2 = obj:get_pos() From 5d5c96455dc2d645b95970e7a55a77e22d50be4d Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 26 Jun 2020 21:31:23 -0400 Subject: [PATCH 073/108] re-fix... --- mods/ITEMS/mcl_potions/splash.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 3a2550cadc..4e5b910957 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -61,8 +61,8 @@ local function register_splash(name, descr, color, def) }) self.object:remove() for _,obj in pairs(minetest.get_objects_inside_radius(pos, 4)) do - - local entity = obj.get_luaentity() + + local entity = obj:get_luaentity() if obj:is_player() or entity._cmi_is_mob then local pos2 = obj:get_pos() From d1c2ce1bb609412d684a3b102e39c5421d0a9eb3 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 27 Jun 2020 07:56:27 -0400 Subject: [PATCH 074/108] Correct Lingering effect durations. --- mods/ITEMS/mcl_potions/init.lua | 8 +++++ mods/ITEMS/mcl_potions/lingering.lua | 44 +++++++++++++++------------- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index ff42768a7a..2e6d86e92f 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -1,6 +1,14 @@ local S = minetest.get_translator("mcl_potions") mcl_potions = {} + +mcl_potions.DURATION = 180 +mcl_potions.DURATION_PLUS = mcl_potions.DURATION * (8/3) +mcl_potions.DURATION_2 = mcl_potions.DURATION * (1/2) + +mcl_potions.INV_FACTOR = 0.25 + + local modpath = minetest.get_modpath("mcl_potions") dofile(modpath .. "/functions.lua") dofile(modpath .. "/splash.lua") diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 28f524922b..7141ed1f2b 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -157,51 +157,55 @@ register_lingering("thick", "Lingering Thick Potion", "#0000FF", { }) register_lingering("healing", "Lingering Healing", "#AA0000", { - potion_fun = function(player) player:set_hp(player:get_hp() + 3*0.5) end, + potion_fun = function(player) player:set_hp(player:get_hp() + 4*0.5) end, }) register_lingering("healing_2", "Lingering Healing II", "#DD0000", { - potion_fun = function(player, redx) player:set_hp(player:get_hp() + 6*0.5) end, + potion_fun = function(player, redx) player:set_hp(player:get_hp() + 8*0.5) end, }) register_lingering("harming", "Lingering Harming", "#660099", { - potion_fun = function(player, redx) mcl_potions.healing_func(player, -4*0.5) end, -}) - -register_lingering("harming_2", "Lingering Harming II", "#330066", { potion_fun = function(player, redx) mcl_potions.healing_func(player, -6*0.5) end, }) +register_lingering("harming_2", "Lingering Harming II", "#330066", { + potion_fun = function(player, redx) mcl_potions.healing_func(player, -12*0.5) end, +}) + register_lingering("leaping", "Lingering Leaping", "#00CC33", { - potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, 135*0.25) end + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, mcl_potions.DURATION*0.25) end }) register_lingering("leaping_2", "Lingering Leaping II", "#00EE33", { - potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.4, 135*0.25) end + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.4, mcl_potions.DURATION_2*0.25) end }) register_lingering("leaping_plus", "Lingering Leaping +", "#00DD33", { - potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, 360*0.25) end + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, mcl_potions.DURATION_PLUS*0.25) end }) register_lingering("swiftness", "Lingering Swiftness", "#009999", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 135*0.25) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, mcl_potions.DURATION*0.25) end }) register_lingering("swiftness_2", "Lingering Swiftness II", "#00BBBB", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.4, 135*0.25) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.4, mcl_potions.DURATION*0.25) end }) register_lingering("swiftness_plus", "Lingering Swiftness +", "#00BBBB", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 360*0.25) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, mcl_potions.DURATION_PLUS*0.25) end }) -register_lingering("slowness", "Lingering Slowness ", "#000080", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 68*0.25) end +register_lingering("slowness", "Lingering Slowness", "#000080", { + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, mcl_potions.DURATION*mcl_potions.INV_FACTOR*0.25) end }) register_lingering("slowness_plus", "Lingering Slowness +", "#000066", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 180*0.25) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, mcl_potions.DURATION_PLUS*mcl_potions.INV_FACTOR*0.25) end +}) + +register_lingering("slowness_2", "Lingering Slowness IV", "#000066", { + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.4, 20*0.25) end }) register_lingering("poison", "Lingering Poison", "#335544", { @@ -221,7 +225,7 @@ register_lingering("regeneration", "Lingering Regeneration", "#A52BB2", { }) register_lingering("regeneration_2", "Lingering Regeneration II", "#B52CC2", { - potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 1.2, 21*0.25) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 1.2, 22*0.25) end }) register_lingering("regeneration_plus", "Lingering Regeneration +", "#C53DD3", { @@ -229,17 +233,17 @@ register_lingering("regeneration_plus", "Lingering Regeneration +", "#C53DD3", { }) register_lingering("invisibility", "Lingering Invisibility", "#B0B0B0", { - potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 135*0.25) end + potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, mcl_potions.DURATION*0.25) end }) register_lingering("invisibility_plus", "Lingering Invisibility +", "#A0A0A0", { - potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 300*0.25) end + potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, mcl_potions.DURATION_PLUS*0.25) end }) register_lingering("weakness", "Lingering Weakness", "#6600AA", { - potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.2, 68*0.25) end + potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.2, mcl_potions.DURATION*mcl_potions.INV_FACTOR*0.25) end }) register_lingering("weakness_plus", "Lingering Weakness +", "#7700BB", { - potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.4, 180*0.25) end + potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.4, mcl_potions.DURATION_PLUS*mcl_potions.INV_FACTOR*0.25) end }) From e50aa40bead4bb14507c6490e0fa505e28298c5f Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 27 Jun 2020 07:57:51 -0400 Subject: [PATCH 075/108] Add slowness IV --- mods/ITEMS/mcl_potions/init.lua | 2 +- mods/ITEMS/mcl_potions/potions.lua | 23 +++++++++++++++++++++++ mods/ITEMS/mcl_potions/splash.lua | 6 +++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 2e6d86e92f..3a6b3b1b2d 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -324,7 +324,7 @@ local output_table = { local enhancement_table = {} local extension_table = {} local potions = {"awkward", "mundane", "thick"} -for i, potion in ipairs({"healing","harming","swiftness","leaping","poison","regeneration","invisibility","weakness","water_breathing","night_vision"}) do +for i, potion in ipairs({"healing","harming","swiftness","slowness","leaping","poison","regeneration","invisibility","weakness","water_breathing","night_vision"}) do table.insert(potions, potion) diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index 0f387f2a33..59ed56a730 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -316,6 +316,29 @@ minetest.register_craftitem("mcl_potions:slowness_plus", { end, }) +minetest.register_craftitem("mcl_potions:slowness_2", { + description = S("Slowness Potion IV"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#000090"), + inventory_image = potion_image("#000090"), + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.swiftness_func(user, 0.40, 20) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) + mcl_potions._use_potion(itemstack, user, "#000090") + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.swiftness_func(user, 0.40, 20) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) + mcl_potions._use_potion(itemstack, user, "#000090") + return itemstack + end, +}) + minetest.register_craftitem("mcl_potions:leaping", { description = S("Leaping Potion"), diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 4e5b910957..1cc0016d51 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -137,10 +137,14 @@ register_splash("swiftness_plus", "Splash Swiftness +", "#00BBBB", { potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 360*redx) end }) -register_splash("slowness", "Splash Slowness ", "#000080", { +register_splash("slowness", "Splash Slowness", "#000080", { potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 68*redx) end }) +register_splash("slowness_2", "Splash Slowness IV", "#000080", { + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.4, 20*redx) end +}) + register_splash("slowness_plus", "Splash Slowness +", "#000066", { potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 180*redx) end }) From 0369d931a35baaa98215ad8057aa38b548acb9ee Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 27 Jun 2020 08:15:01 -0400 Subject: [PATCH 076/108] Correct Splash effect times --- mods/ITEMS/mcl_potions/init.lua | 10 +++--- mods/ITEMS/mcl_potions/splash.lua | 57 +++++++++++++++++-------------- 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 3a6b3b1b2d..d56ae738d6 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -1,12 +1,16 @@ local S = minetest.get_translator("mcl_potions") mcl_potions = {} +-- duration effects of redstone are a factor of 8/3 +-- duration effects of glowstone are a time factor of 1/2 +-- splash potion duration effects are reduced by a factor of 3/4 mcl_potions.DURATION = 180 mcl_potions.DURATION_PLUS = mcl_potions.DURATION * (8/3) mcl_potions.DURATION_2 = mcl_potions.DURATION * (1/2) -mcl_potions.INV_FACTOR = 0.25 +mcl_potions.INV_FACTOR = 0.50 +mcl_potions.SPLASH_FACTOR = 0.75 local modpath = minetest.get_modpath("mcl_potions") @@ -285,10 +289,6 @@ minetest.register_craft({ }) --- duration effects of redstone are a factor of 8/3 --- duration effects of glowstone are a time factor of 1/2 and effect of 14/12 --- splash potion effects are reduced by a factor of 3/4 - local water_table = { ["mcl_nether:nether_wart_item"] = "mcl_potions:awkward", ["mcl_potions:fermented_spider_eye"] = "mcl_potions:weakness", diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 1cc0016d51..aba4122d89 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -1,4 +1,4 @@ -local splash_image = function(colorstring, opacity) +splash_DUR*local splash_image = function(colorstring, opacity) if not opacity then opacity = 127 end @@ -77,6 +77,10 @@ local function register_splash(name, descr, color, def) }) end +local splash_DUR = mcl_potions.DURATION*mcl_potions.SPLASH_FACTOR +local splash_DUR_2 = mcl_potions.DURATION_2*mcl_potions.SPLASH_FACTOR +local splash_DUR_pl = mcl_potions.DURATION_PLUS*mcl_potions.SPLASH_FACTOR + register_splash("water", "Splash Water", "#0000FF", { potion_fun = function(player, redx) end, }) @@ -114,101 +118,102 @@ register_splash("harming_2", "Splash Harming II", "#330066", { }) register_splash("leaping", "Splash Leaping", "#00CC33", { - potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, 135*redx) end + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, splash_DUR*redx) end }) register_splash("leaping_2", "Splash Leaping II", "#00EE33", { - potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.4, 135*redx) end + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.4, splash_DUR_2*redx) end }) register_splash("leaping_plus", "Splash Leaping +", "#00DD33", { - potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, 360*redx) end + potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, splash_DUR_pl*redx) end }) register_splash("swiftness", "Splash Swiftness", "#009999", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 135*redx) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, splash_DUR*redx) end }) register_splash("swiftness_2", "Splash Swiftness II", "#00BBBB", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.4, 135*redx) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.4, splash_DUR_2*redx) end }) register_splash("swiftness_plus", "Splash Swiftness +", "#00BBBB", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 360*redx) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, splash_DUR_pl*redx) end }) register_splash("slowness", "Splash Slowness", "#000080", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 68*redx) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, splash_DUR*mcl_potions.INV_FACTOR*redx) end }) register_splash("slowness_2", "Splash Slowness IV", "#000080", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.4, 20*redx) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.4, 20*mcl_potions.SPLASH_FACTOR*redx) end }) register_splash("slowness_plus", "Splash Slowness +", "#000066", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 180*redx) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, splash_DUR_pl*mcl_potions.INV_FACTOR = 0.50 +*redx) end }) register_splash("poison", "Splash Poison", "#335544", { - potion_fun = function(player, redx) mcl_potions.poison_func(player, 2.5, 45*redx) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 2.5, splash_DUR*mcl_potions.INV_FACTOR*redx) end }) register_splash("poison_2", "Splash Poison II", "#446655", { - potion_fun = function(player, redx) mcl_potions.poison_func(player, 1.2, 21*redx) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 1.2, splash_DUR_2*mcl_potions.INV_FACTOR*redx) end }) register_splash("poison_plus", "Splash Poison +", "#557766", { - potion_fun = function(player, redx) mcl_potions.poison_func(player, 2.5, 90*redx) end + potion_fun = function(player, redx) mcl_potions.poison_func(player, 2.5, splash_DUR_pl*mcl_potions.INV_FACTOR*redx) end }) register_splash("regeneration", "Splash Regeneration", "#A52BB2", { - potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 2.5, 45*redx) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 2.5, splash_DUR*mcl_potions.INV_FACTOR*redx) end }) register_splash("regeneration_2", "Splash Regeneration II", "#B52CC2", { - potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 1.2, 21*redx) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 1.2, (splash_DUR_2*mcl_potions.INV_FACTOR + 1)*redx) end }) register_splash("regeneration_plus", "Splash Regeneration +", "#C53DD3", { - potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 2.5, 90*redx) end + potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 2.5, splash_DUR_pl*mcl_potions.INV_FACTOR*redx) end }) register_splash("invisibility", "Splash Invisibility", "#B0B0B0", { - potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 135*redx) end + potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, splash_DUR*redx) end }) register_splash("invisibility_plus", "Splash Invisibility +", "#A0A0A0", { - potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 360*redx) end + potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, splash_DUR_pl*redx) end }) register_splash("weakness", "Splash Weakness", "#6600AA", { - potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.2, 68*redx) end + potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.2, splash_DUR*mcl_potions.INV_FACTOR*redx) end }) register_splash("weakness_plus", "Splash Weakness +", "#7700BB", { - potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.4, 180*redx) end + potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.4, splash_DUR_pl*mcl_potions.INV_FACTOR*redx) end }) register_splash("water_breathing", "Splash Water Breathing", "#0000AA", { - potion_fun = function(player, redx) mcl_potions.water_breathing_func(player, 135*redx) end + potion_fun = function(player, redx) mcl_potions.water_breathing_func(player, splash_DUR*redx) end }) register_splash("water_breathing_plus", "Splash Water Breathing +", "#0000CC", { - potion_fun = function(player, redx) mcl_potions.water_breathing_func(player, 360*redx) end + potion_fun = function(player, redx) mcl_potions.water_breathing_func(player, splash_DUR_pl*redx) end }) register_splash("water_breathing_plus", "Splash Fire Resistance", "#D0A040", { - potion_fun = function(player, redx) mcl_potions.fire_resistance_func(player, 135*redx) end + potion_fun = function(player, redx) mcl_potions.fire_resistance_func(player, splash_DUR*redx) end }) register_splash("water_breathing_plus", "Splash Fire Resistance +", "#E0B050", { - potion_fun = function(player, redx) mcl_potions.fire_resistance_func(player, 360*redx) end + potion_fun = function(player, redx) mcl_potions.fire_resistance_func(player, splash_DUR_pl*redx) end }) register_splash("night_vision", "Splash Night Vision", "#1010AA", { - potion_fun = function(player, redx) mcl_potions.night_vision_func(player, 135*redx) end + potion_fun = function(player, redx) mcl_potions.night_vision_func(player, splash_DUR*redx) end }) register_splash("night_vision_plus", "Splash Night Vision +", "#2020BA", { - potion_fun = function(player, redx) mcl_potions.night_vision_func(player, 360*redx) end + potion_fun = function(player, redx) mcl_potions.night_vision_func(player, splash_DUR_pl*redx) end }) From c1321ce5759fc42461b3023c27d949906765d925 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 27 Jun 2020 08:15:53 -0400 Subject: [PATCH 077/108] Fix wierd copy/paste --- mods/ITEMS/mcl_potions/splash.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index aba4122d89..7b6df8abb5 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -1,4 +1,4 @@ -splash_DUR*local splash_image = function(colorstring, opacity) +local splash_image = function(colorstring, opacity) if not opacity then opacity = 127 end From 0337d0f911f563ab972f36531aa33666ea099851 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 27 Jun 2020 08:17:26 -0400 Subject: [PATCH 078/108] Another replace all mistake --- mods/ITEMS/mcl_potions/splash.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 7b6df8abb5..05d1a66aec 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -150,8 +150,7 @@ register_splash("slowness_2", "Splash Slowness IV", "#000080", { }) register_splash("slowness_plus", "Splash Slowness +", "#000066", { - potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, splash_DUR_pl*mcl_potions.INV_FACTOR = 0.50 -*redx) end + potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, splash_DUR_pl*mcl_potions.INV_FACTOR*redx) end }) register_splash("poison", "Splash Poison", "#335544", { From 78fe436c91f86ef22320b65134120b6a074f1a6b Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 27 Jun 2020 08:24:32 -0400 Subject: [PATCH 079/108] Correct potion durations --- mods/ITEMS/mcl_potions/potions.lua | 96 +++++++++++++++--------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index 59ed56a730..e54cf36b32 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -163,14 +163,14 @@ minetest.register_craftitem("mcl_potions:night_vision", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.night_vision_func(user, 180) + mcl_potions.night_vision_func(user, mcl_potions.DURATION) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#1010AA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.night_vision_func(user, 180) + mcl_potions.night_vision_func(user, mcl_potions.DURATION) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#1010AA") return itemstack @@ -186,14 +186,14 @@ minetest.register_craftitem("mcl_potions:night_vision_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.night_vision_func(user, 480) + mcl_potions.night_vision_func(user, mcl_potions.DURATION_PLUS) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#2020BA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.night_vision_func(user, 480) + mcl_potions.night_vision_func(user, mcl_potions.DURATION_PLUS) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#2020BA") return itemstack @@ -210,14 +210,14 @@ minetest.register_craftitem("mcl_potions:swiftness", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 1.2, 180) + mcl_potions.swiftness_func(user, 1.2, mcl_potions.DURATION) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#009999") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 1.2, 180) + mcl_potions.swiftness_func(user, 1.2, mcl_potions.DURATION) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#009999") return itemstack @@ -233,14 +233,14 @@ minetest.register_craftitem("mcl_potions:swiftness_2", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 1.4, 90) + mcl_potions.swiftness_func(user, 1.4, mcl_potions.DURATION_2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00BBBB") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 1.4, 90) + mcl_potions.swiftness_func(user, 1.4, mcl_potions.DURATION_2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00BBBB") return itemstack @@ -256,14 +256,14 @@ minetest.register_craftitem("mcl_potions:swiftness_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 1.2, 480) + mcl_potions.swiftness_func(user, 1.2, mcl_potions.DURATION_PLUS) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00AAAA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 1.2, 480) + mcl_potions.swiftness_func(user, 1.2, mcl_potions.DURATION_PLUS) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00AAAA") return itemstack @@ -279,14 +279,14 @@ minetest.register_craftitem("mcl_potions:slowness", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 0.85, 90) + mcl_potions.swiftness_func(user, 0.85, mcl_potions.DURATION_2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#000080") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 0.85, 90) + mcl_potions.swiftness_func(user, 0.85, mcl_potions.DURATION_2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#000080") return itemstack @@ -302,14 +302,14 @@ minetest.register_craftitem("mcl_potions:slowness_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 0.85, 240) + mcl_potions.swiftness_func(user, 0.85, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#000066") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 0.85, 240) + mcl_potions.swiftness_func(user, 0.85, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#000066") return itemstack @@ -349,14 +349,14 @@ minetest.register_craftitem("mcl_potions:leaping", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.2, 180) + mcl_potions.leaping_func(user, 1.2, mcl_potions.DURATION) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00CC33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.2, 180) + mcl_potions.leaping_func(user, 1.2, mcl_potions.DURATION) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00CC33") return itemstack @@ -372,14 +372,14 @@ minetest.register_craftitem("mcl_potions:leaping_2", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.4, 90) + mcl_potions.leaping_func(user, 1.4, mcl_potions.DURATION_2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00EE33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.4, 90) + mcl_potions.leaping_func(user, 1.4, mcl_potions.DURATION_2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00EE33") return itemstack @@ -395,14 +395,14 @@ minetest.register_craftitem("mcl_potions:leaping_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.2, 480) + mcl_potions.leaping_func(user, 1.2, mcl_potions.DURATION_PLUS) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00DD33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.2, 480) + mcl_potions.leaping_func(user, 1.2, mcl_potions.DURATION_PLUS) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00DD33") return itemstack @@ -419,14 +419,14 @@ minetest.register_craftitem("mcl_potions:weakness", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.weakness_func(user, 1.2, 90) + mcl_potions.weakness_func(user, 1.2, mcl_potions.DURATION_2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#6600AA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.weakness_func(user, 1.2, 90) + mcl_potions.weakness_func(user, 1.2, mcl_potions.DURATION_2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#6600AA") return itemstack @@ -442,14 +442,14 @@ minetest.register_craftitem("mcl_potions:weakness_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.weakness_func(user, 1.4, 240) + mcl_potions.weakness_func(user, 1.4, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#7700BB") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.weakness_func(user, 1.4, 240) + mcl_potions.weakness_func(user, 1.4, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#7700BB") return itemstack @@ -466,14 +466,14 @@ minetest.register_craftitem("mcl_potions:poison", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.poison_func(user, 2.5, 45) + mcl_potions.poison_func(user, 2.5, mcl_potions.DURATION*mcl_potions.INV_FACTOR*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#225533") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.poison_func(user, 2.5, 45) + mcl_potions.poison_func(user, 2.5, mcl_potions.DURATION*mcl_potions.INV_FACTOR*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#225533") return itemstack @@ -489,14 +489,14 @@ minetest.register_craftitem("mcl_potions:poison_2", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.poison_func(user, 1.2, 21) + mcl_potions.poison_func(user, 1.2, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#447755") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.poison_func(user, 1.2, 21) + mcl_potions.poison_func(user, 1.2, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#447755") return itemstack @@ -512,14 +512,14 @@ minetest.register_craftitem("mcl_potions:poison_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.poison_func(user, 2.5, 90) + mcl_potions.poison_func(user, 2.5, mcl_potions.DURATION_2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#336644") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.poison_func(user, 2.5, 90) + mcl_potions.poison_func(user, 2.5, mcl_potions.DURATION_2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#336644") return itemstack @@ -536,14 +536,14 @@ minetest.register_craftitem("mcl_potions:regeneration", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 2.5, 45) + mcl_potions.regeneration_func(user, 2.5, mcl_potions.DURATION*mcl_potions.INV_FACTOR*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#A52BB2") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 2.5, 45) + mcl_potions.regeneration_func(user, 2.5, mcl_potions.DURATION*mcl_potions.INV_FACTOR*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#A52BB2") return itemstack @@ -559,14 +559,14 @@ minetest.register_craftitem("mcl_potions:regeneration_2", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 1.2, 22) + mcl_potions.regeneration_func(user, 1.2, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR*mcl_potions.INV_FACTOR + 1) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#B52CC2") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 1.2, 22) + mcl_potions.regeneration_func(user, 1.2, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR*mcl_potions.INV_FACTOR + 1) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#B52CC2") return itemstack @@ -582,14 +582,14 @@ minetest.register_craftitem("mcl_potions:regeneration_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 2.5, 90) + mcl_potions.regeneration_func(user, 2.5, mcl_potions.DURATION_2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#C53DD3") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 2.5, 90) + mcl_potions.regeneration_func(user, 2.5, mcl_potions.DURATION_2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#C53DD3") return itemstack @@ -606,14 +606,14 @@ minetest.register_craftitem("mcl_potions:invisibility", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.invisiblility_func(user, 180) + mcl_potions.invisiblility_func(user, mcl_potions.DURATION) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#B0B0B0") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.invisiblility_func(user, 180) + mcl_potions.invisiblility_func(user, mcl_potions.DURATION) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#B0B0B0") return itemstack @@ -629,14 +629,14 @@ minetest.register_craftitem("mcl_potions:invisibility_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.invisiblility_func(user, 480) + mcl_potions.invisiblility_func(user, mcl_potions.DURATION_PLUS) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#A0A0A0") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.invisiblility_func(user, 480) + mcl_potions.invisiblility_func(user, mcl_potions.DURATION_PLUS) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#A0A0A0") return itemstack @@ -660,14 +660,14 @@ minetest.register_craftitem("mcl_potions:water_breathing", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.water_breathing_func(user, 180) + mcl_potions.water_breathing_func(user, mcl_potions.DURATION) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#0000AA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.water_breathing_func(user, 180) + mcl_potions.water_breathing_func(user, mcl_potions.DURATION) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#0000AA") return itemstack @@ -683,14 +683,14 @@ minetest.register_craftitem("mcl_potions:water_breathing_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.water_breathing_func(user, 480) + mcl_potions.water_breathing_func(user, mcl_potions.DURATION_PLUS) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#0000CC") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.water_breathing_func(user, 480) + mcl_potions.water_breathing_func(user, mcl_potions.DURATION_PLUS) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#0000CC") return itemstack @@ -707,14 +707,14 @@ minetest.register_craftitem("mcl_potions:fire_resistance", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.fire_resistance_func(user, 180) + mcl_potions.fire_resistance_func(user, mcl_potions.DURATION) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#D0A040") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.fire_resistance_func(user, 180) + mcl_potions.fire_resistance_func(user, mcl_potions.DURATION) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#D0A040") return itemstack @@ -730,14 +730,14 @@ minetest.register_craftitem("mcl_potions:fire_resistance_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.fire_resistance_func(user, 480) + mcl_potions.fire_resistance_func(user, mcl_potions.DURATION_PLUS) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#E0B050") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.fire_resistance_func(user, 480) + mcl_potions.fire_resistance_func(user, mcl_potions.DURATION_PLUS) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#E0B050") return itemstack From f2e9b501b8e35b0d23bbc6997d1b780a048126cd Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 27 Jun 2020 09:07:56 -0400 Subject: [PATCH 080/108] small correction to initial lingering cloud --- mods/ITEMS/mcl_potions/lingering.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 7141ed1f2b..4362b6b02f 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -128,7 +128,7 @@ local function register_lingering(name, descr, color, def) maxsize = 2, collisiondetection = true, vertical = false, - texture = "mcl_potions_sprite.png^[colorize:"..lingering_effect_at[pos].color..":127", + texture = "mcl_potions_sprite.png^[colorize:"..color..":127", }) self.object:remove() end From 2a29ec78274906860c7db99eb2aa2e67a1393d10 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 27 Jun 2020 11:27:57 -0400 Subject: [PATCH 081/108] Add sprite effects during brew. --- mods/ITEMS/mcl_brewing/init.lua | 19 ++++++++++++++++++ .../textures/mcl_brewing_bubble_sprite.png | Bin 0 -> 240 bytes 2 files changed, 19 insertions(+) create mode 100644 mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubble_sprite.png diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index f8d001a21a..6234e5badb 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -146,6 +146,25 @@ local function brewing_stand_timer(pos, elapsed) fuel_timer = 0 end + local d = 0.5 + minetest.add_particlespawner({ + amount = 4, + time = 1, + minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d}, + maxpos = {x=pos.x+d, y=pos.y+2, z=pos.z+d}, + minvel = {x=-0.1, y=0, z=-0.1}, + maxvel = {x=0.1, y=0.5, z=0.1}, + minacc = {x=-0.05, y=0, z=-0.05}, + maxacc = {x=0.05, y=.1, z=0.05}, + minexptime = 1, + maxexptime = 2, + minsize = 0.5, + maxsize = 2, + collisiondetection = true, + vertical = false, + texture = "mcl_brewing_bubble_sprite.png", + }) + -- Replace the stand item with the brew result if stand_timer >= BREW_TIME then diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubble_sprite.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubble_sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..119b7b857cda509fca2b2c01c0a302a77990f90f GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^%plCc1|-8Yw(bW~jKx9jP7LeL$-D$|a#ABa(|mmy zw18|51{Ovs23C*~Ahu(ahO^xmHNfUDGB7bPv}ZD~K-KsGX%I*NVvrsP&9s0Cu7Y_1 zGlC6N!LVBR4ah~D1s;*b3=DinK$vl=HlH+5P}bAMF@!@lIf0?6Q&{~U`$ZiEx41aD f4qmZ_(+mvf&U2-(*i7#ODrE3<^>bP0l+XkKNVOz< literal 0 HcmV?d00001 From 79e7f6849fa61e97de723efd86e229e71af242d1 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 27 Jun 2020 18:50:08 -0400 Subject: [PATCH 082/108] Fix lingering potion timer. --- mods/ITEMS/mcl_potions/lingering.lua | 87 ++++++++++++---------------- 1 file changed, 37 insertions(+), 50 deletions(-) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 4362b6b02f..103a739a76 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -12,68 +12,55 @@ local function add_lingering_effect(pos, color, def) lingering_effect_at[pos] = {color = color, timer = 30, def = def} - local timer = 0 +end - minetest.register_globalstep(function(dtime) - timer = timer + dtime +local lingering_timer = 0 +minetest.register_globalstep(function(dtime) - if timer >= 1 then + lingering_timer = lingering_timer + dtime + if lingering_timer >= 1 then - for pos, vals in pairs(lingering_effect_at) do + for pos, vals in pairs(lingering_effect_at) do - if lingering_effect_at[pos] then + vals.timer = vals.timer - lingering_timer + local d = 4 * (vals.timer / 30.0) - lingering_effect_at[pos].timer = lingering_effect_at[pos].timer - timer + minetest.add_particlespawner({ + amount = 5 * d^2, + time = 1, + minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d}, + maxpos = {x=pos.x+d, y=pos.y+1, z=pos.z+d}, + minvel = {x=-0.5, y=0, z=-0.5}, + maxvel = {x=0.5, y=0.5, z=0.5}, + minacc = {x=-0.2, y=0, z=-0.2}, + maxacc = {x=0.2, y=.05, z=0.2}, + minexptime = 1, + maxexptime = 2, + minsize = 2, + maxsize = 4, + collisiondetection = true, + vertical = false, + texture = "mcl_potions_sprite.png^[colorize:"..vals.color..":127", + }) - -- print(lingering_effect_at[pos].timer) + for _, obj in pairs(minetest.get_objects_inside_radius(pos, d)) do - if lingering_effect_at[pos].timer > 0 then + local entity = obj:get_luaentity() + if obj:is_player() or entity._cmi_is_mob then - local d = 4 * (lingering_effect_at[pos].timer / 30.0) + vals.def.potion_fun(obj) + vals.timer = vals.timer / 2 - minetest.add_particlespawner({ - amount = 5 * d^2, - time = 1, - minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d}, - maxpos = {x=pos.x+d, y=pos.y+1, z=pos.z+d}, - minvel = {x=-0.5, y=0, z=-0.5}, - maxvel = {x=0.5, y=0.5, z=0.5}, - minacc = {x=-0.2, y=0, z=-0.2}, - maxacc = {x=0.2, y=.05, z=0.2}, - minexptime = 1, - maxexptime = 2, - minsize = 2, - maxsize = 4, - collisiondetection = true, - vertical = false, - texture = "mcl_potions_sprite.png^[colorize:"..lingering_effect_at[pos].color..":127", - }) - - for _, obj in pairs(minetest.get_objects_inside_radius(pos, d)) do - - local entity = obj:get_luaentity() - if obj:is_player() or entity._cmi_is_mob then - - -- if obj:is_player() then print(obj:is_player()) print(obj:get_player_name()) end - -- if entity then print(entity.name) print(entity._cmi_is_mob) end - - lingering_effect_at[pos].def.potion_fun(obj) - lingering_effect_at[pos].timer = lingering_effect_at[pos].timer / 2 - - end - end - - else - lingering_effect_at[pos] = nil - end end end - timer = 0 - end - end) -end + if vals.timer <= 0 then lingering_effect_at[pos] = nil end + + end + lingering_timer = 0 + end +end) @@ -114,7 +101,7 @@ local function register_lingering(name, descr, color, def) minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1}) add_lingering_effect(pos, color, def) minetest.add_particlespawner({ - amount = 20, + amount = 40, time = 1, minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d}, maxpos = {x=pos.x+d, y=pos.y+1, z=pos.z+d}, From abd1b682cb111e15340fe92ec20bede74206e9c2 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 27 Jun 2020 19:00:58 -0400 Subject: [PATCH 083/108] more sprites! --- mods/ITEMS/mcl_potions/lingering.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 103a739a76..fb837d213a 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -27,7 +27,7 @@ minetest.register_globalstep(function(dtime) local d = 4 * (vals.timer / 30.0) minetest.add_particlespawner({ - amount = 5 * d^2, + amount = 10 * d^2, time = 1, minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d}, maxpos = {x=pos.x+d, y=pos.y+1, z=pos.z+d}, From 44ee9cde86021e287ba59026783b3bd945a4076c Mon Sep 17 00:00:00 2001 From: Brandon Date: Sun, 28 Jun 2020 09:38:06 -0400 Subject: [PATCH 084/108] Add potions/brewing to creative inventory --- mods/HUD/mcl_inventory/creative.lua | 56 +++++++++++++--------------- mods/HUD/mcl_inventory/depends.txt | 2 + mods/ITEMS/mcl_brewing/init.lua | 16 ++++---- mods/ITEMS/mcl_potions/lingering.lua | 1 + mods/ITEMS/mcl_potions/splash.lua | 1 + 5 files changed, 37 insertions(+), 39 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 0b5f52b6b2..8fe745804d 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -10,10 +10,8 @@ local inventory_lists = {} local show_armor = minetest.get_modpath("mcl_armor") ~= nil local mod_player = minetest.get_modpath("mcl_player") ~= nil --- TODO: Brewing is disabled. Add brewing (uncommented code) when it is implemented properly - -- Create tables -local builtin_filter_ids = {"blocks","deco","redstone","rail","food","tools","combat","mobs",--[["brew",]]"matr","misc","all"} +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 @@ -67,11 +65,10 @@ do table.insert(inventory_lists["mobs"], name) nonmisc = true end - -- TODO: add brew - --if def.groups.brewitem then - --table.insert(inventory_lists["brew"], 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 @@ -160,7 +157,7 @@ trash:set_size("main", 1) local noffset = {} -- numeric tab offset local offset = {} -- string offset: -local boffset = {} -- +local boffset = {} -- local hoch = {} local filtername = {} local bg = {} @@ -182,6 +179,7 @@ next_noffset("blocks") next_noffset("deco") next_noffset("redstone") next_noffset("rail") +next_noffset("brew") next_noffset("misc") next_noffset("nix", true) @@ -193,7 +191,6 @@ next_noffset("food") next_noffset("tools") next_noffset("combat") next_noffset("mobs") ---next_noffset("brew") -- TODO: add brew next_noffset("matr") next_noffset("inv", true) @@ -206,6 +203,7 @@ hoch["blocks"] = "" hoch["deco"] = "" hoch["redstone"] = "" hoch["rail"] = "" +hoch["brew"] = "" hoch["misc"] = "" hoch["nix"] = "" hoch["default"] = "" @@ -213,7 +211,6 @@ hoch["food"] = "_down" hoch["tools"] = "_down" hoch["combat"] = "_down" hoch["mobs"] = "_down" ---hoch["brew"] = "_down" -- TODO: add brew hoch["matr"] = "_down" hoch["inv"] = "_down" @@ -228,26 +225,26 @@ filtername["food"] = S("Foodstuffs") filtername["tools"] = S("Tools") filtername["combat"] = S("Combat") filtername["mobs"] = S("Mobs") ---filtername["brew"] = S("Brewing") -- TODO: add brew +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["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 -- TODO: add brew - bg["matr"] = dark_bg - bg["inv"] = dark_bg + bg["brew"] = dark_bg + bg["matr"] = dark_bg + bg["inv"] = dark_bg bg["default"] = dark_bg end @@ -377,7 +374,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz tools = "mcl_core:axe_iron", combat = "mcl_core:sword_gold", mobs = "mobs_mc:cow", - brew = "mcl_potions:potion_water", + brew = "mcl_potions:water", matr = "mcl_core:stick", inv = "mcl_chests:chest", } @@ -388,7 +385,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz else bg_img = "crafting_creative_inactive"..hoch[this_tab]..".png" end - return + 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 .. "]" .. @@ -428,9 +425,8 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz "tooltip[combat;"..F(filtername["combat"]).."]".. tab(name, "mobs") .. "tooltip[mobs;"..F(filtername["mobs"]).."]".. - -- TODO: Add brew - --tab(name, "brew") .. - --"tooltip[brew;"..F(filtername["brew"]).."]".. + tab(name, "brew") .. + "tooltip[brew;"..F(filtername["brew"]).."]".. tab(name, "matr") .. "tooltip[matr;"..F(filtername["matr"]).."]".. tab(name, "inv") .. @@ -504,12 +500,10 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if players[name].page == "mobs" then return end set_inv_page("mobs",player) page = "mobs" - --[[ TODO: add brew 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) diff --git a/mods/HUD/mcl_inventory/depends.txt b/mods/HUD/mcl_inventory/depends.txt index fb454b7d11..cf04c75efd 100644 --- a/mods/HUD/mcl_inventory/depends.txt +++ b/mods/HUD/mcl_inventory/depends.txt @@ -3,3 +3,5 @@ mcl_formspec mcl_player? _mcl_autogroup? mcl_armor? +mcl_brewing? +mcl_potions? diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 6234e5badb..7d0319d6db 100755 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -384,7 +384,7 @@ minetest.register_node("mcl_brewing:stand_000", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 0, not_in_craft_guide = 0}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, brewitem=1, not_in_creative_inventory = 0, not_in_craft_guide = 0}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -469,7 +469,7 @@ minetest.register_node("mcl_brewing:stand_100", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, brewitem=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -553,7 +553,7 @@ minetest.register_node("mcl_brewing:stand_010", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, brewitem=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -637,7 +637,7 @@ minetest.register_node("mcl_brewing:stand_001", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, brewitem=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -721,7 +721,7 @@ minetest.register_node("mcl_brewing:stand_110", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, brewitem=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -805,7 +805,7 @@ minetest.register_node("mcl_brewing:stand_101", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, brewitem=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -889,7 +889,7 @@ minetest.register_node("mcl_brewing:stand_011", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, brewitem=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", @@ -973,7 +973,7 @@ minetest.register_node("mcl_brewing:stand_111", { _doc_items_longdesc = S("The stand allows you to brew potions!"), _doc_items_usagehelp = doc_string, _tt_help = S("Brew Potions"), - groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, deco_block=1, brewing_stand=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, + groups = {pickaxey=1, material_stone=1, falling_node=1, crush_after_fall=1, brewitem=1, not_in_creative_inventory = 1, not_in_craft_guide = 1}, tiles = tiles, drop = "mcl_brewing:stand", paramtype = "light", diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index fb837d213a..cbafe905d7 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -70,6 +70,7 @@ local function register_lingering(name, descr, color, def) minetest.register_craftitem(id, { description = descr, inventory_image = lingering_image(color), + groups = {brewitem=1, not_in_creative_inventory=0}, on_use = function(item, placer, pointed_thing) local velocity = 10 local dir = placer:get_look_dir(); diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 05d1a66aec..a157943ce8 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -12,6 +12,7 @@ local function register_splash(name, descr, color, def) minetest.register_craftitem(id, { description = descr, inventory_image = splash_image(color), + groups = {brewitem=1, not_in_creative_inventory=0}, on_use = function(item, placer, pointed_thing) local velocity = 10 local dir = placer:get_look_dir(); From 1d471c52df7a34dac9f141cf173b16619a5d25b9 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sun, 28 Jun 2020 12:16:07 -0400 Subject: [PATCH 085/108] Remove potion effects by drinking milk. --- mods/HUD/mcl_inventory/creative.lua | 2 +- mods/ITEMS/mcl_mobitems/init.lua | 2 +- mods/ITEMS/mcl_potions/functions.lua | 7 +++---- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 8fe745804d..1c339cb96e 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -374,7 +374,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz tools = "mcl_core:axe_iron", combat = "mcl_core:sword_gold", mobs = "mobs_mc:cow", - brew = "mcl_potions:water", + brew = "mcl_potions:dragon_breath", matr = "mcl_core:stick", inv = "mcl_chests:chest", } diff --git a/mods/ITEMS/mcl_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index 3e6aef4853..1f8a13ff61 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -142,6 +142,7 @@ local drink_milk = function(itemstack, player, pointed_thing) if mcl_hunger.active and (bucket:get_name() ~= "mcl_mobitems:milk_bucket" or minetest.settings:get_bool("creative_mode") == true) then mcl_hunger.stop_poison(player) end + mcl_potions._reset_player_effects(player) return bucket end @@ -439,4 +440,3 @@ minetest.register_craft({ {"mcl_mobitems:slimeball","mcl_mobitems:slimeball","mcl_mobitems:slimeball",}, {"mcl_mobitems:slimeball","mcl_mobitems:slimeball","mcl_mobitems:slimeball",}}, }) - diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 89ff1b531a..aec3a84045 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -187,7 +187,7 @@ minetest.register_globalstep(function(dtime) end) -local function _reset_player_effects(player) +function mcl_potions._reset_player_effects(player) player = player or player:get_luaentity() @@ -231,9 +231,8 @@ local function _reset_player_effects(player) end -minetest.register_on_leaveplayer( function(player) _reset_player_effects(player) end) - -minetest.register_on_dieplayer( function(player) _reset_player_effects(player) end) +minetest.register_on_leaveplayer( function(player) mcl_potions._reset_player_effects(player) end) +minetest.register_on_dieplayer( function(player) mcl_potions._reset_player_effects(player) end) function mcl_potions.is_obj_hit(self, pos) From 46dca32ce9b1fbcd443b706abb564bf678623629 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sun, 28 Jun 2020 12:44:43 -0400 Subject: [PATCH 086/108] Add potion effect subtext. --- mods/ITEMS/mcl_potions/potions.lua | 65 +++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 18 deletions(-) diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index e54cf36b32..7bf1724c48 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -62,6 +62,7 @@ minetest.register_craftitem("mcl_potions:dragon_breath", { minetest.register_craftitem("mcl_potions:healing", { description = S("Healing Potion"), + _tt_help = S("+2 Hearts"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#CC0000"), inventory_image = potion_image("#CC0000"), @@ -85,6 +86,7 @@ minetest.register_craftitem("mcl_potions:healing", { minetest.register_craftitem("mcl_potions:healing_2", { description = S("Healing Potion II"), + _tt_help = S("+4 Hearts"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#DD0000"), inventory_image = potion_image("#DD0000"), @@ -109,6 +111,7 @@ minetest.register_craftitem("mcl_potions:healing_2", { minetest.register_craftitem("mcl_potions:harming", { description = S("Harming Potion"), + _tt_help = S("-3 Hearts"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#660099"), inventory_image = potion_image("#660099"), @@ -132,6 +135,7 @@ minetest.register_craftitem("mcl_potions:harming", { minetest.register_craftitem("mcl_potions:harming_2", { description = S("Harming Potion II"), + _tt_help = S("-6 Hearts"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#330066"), inventory_image = potion_image("#330066"), @@ -156,6 +160,7 @@ minetest.register_craftitem("mcl_potions:harming_2", { minetest.register_craftitem("mcl_potions:night_vision", { description = S("Night Vision Potion"), + _tt_help = S("3:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#1010AA"), inventory_image = potion_image("#1010AA"), @@ -179,6 +184,7 @@ minetest.register_craftitem("mcl_potions:night_vision", { minetest.register_craftitem("mcl_potions:night_vision_plus", { description = S("Night Vision Potion +"), + _tt_help = S("8:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#2020BA"), inventory_image = potion_image("#2020BA"), @@ -203,6 +209,7 @@ minetest.register_craftitem("mcl_potions:night_vision_plus", { minetest.register_craftitem("mcl_potions:swiftness", { description = S("Swiftness Potion"), + _tt_help = S("+20% | 3:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#009999"), inventory_image = potion_image("#009999"), @@ -226,6 +233,7 @@ minetest.register_craftitem("mcl_potions:swiftness", { minetest.register_craftitem("mcl_potions:swiftness_2", { description = S("Swiftness Potion II"), + _tt_help = S("+40% | 1:30"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#00BBBB"), inventory_image = potion_image("#00BBBB"), @@ -249,6 +257,7 @@ minetest.register_craftitem("mcl_potions:swiftness_2", { minetest.register_craftitem("mcl_potions:swiftness_plus", { description = S("Swiftness Potion +"), + _tt_help = S("+20% | 8:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#00AAAA"), inventory_image = potion_image("#00AAAA"), @@ -272,6 +281,7 @@ minetest.register_craftitem("mcl_potions:swiftness_plus", { minetest.register_craftitem("mcl_potions:slowness", { description = S("Slowness Potion"), + _tt_help = S("-15% | 1:30"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#000080"), inventory_image = potion_image("#000080"), @@ -279,14 +289,14 @@ minetest.register_craftitem("mcl_potions:slowness", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 0.85, mcl_potions.DURATION_2) + mcl_potions.swiftness_func(user, 0.85, mcl_potions.DURATION*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#000080") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.swiftness_func(user, 0.85, mcl_potions.DURATION_2) + mcl_potions.swiftness_func(user, 0.85, mcl_potions.DURATION*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#000080") return itemstack @@ -295,6 +305,7 @@ minetest.register_craftitem("mcl_potions:slowness", { minetest.register_craftitem("mcl_potions:slowness_plus", { description = S("Slowness Potion +"), + _tt_help = S("-15% | 4:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#000066"), inventory_image = potion_image("#000066"), @@ -318,6 +329,7 @@ minetest.register_craftitem("mcl_potions:slowness_plus", { minetest.register_craftitem("mcl_potions:slowness_2", { description = S("Slowness Potion IV"), + _tt_help = S("-60% | 0:20"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#000090"), inventory_image = potion_image("#000090"), @@ -342,6 +354,7 @@ minetest.register_craftitem("mcl_potions:slowness_2", { minetest.register_craftitem("mcl_potions:leaping", { description = S("Leaping Potion"), + _tt_help = S("+50% | 3:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#00CC33"), inventory_image = potion_image("#00CC33"), @@ -349,14 +362,14 @@ minetest.register_craftitem("mcl_potions:leaping", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.2, mcl_potions.DURATION) + mcl_potions.leaping_func(user, 1.5, mcl_potions.DURATION) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00CC33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.2, mcl_potions.DURATION) + mcl_potions.leaping_func(user, 1.5, mcl_potions.DURATION) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00CC33") return itemstack @@ -365,6 +378,7 @@ minetest.register_craftitem("mcl_potions:leaping", { minetest.register_craftitem("mcl_potions:leaping_2", { description = S("Leaping Potion II"), + _tt_help = S("+125% | 1:30"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#00EE33"), inventory_image = potion_image("#00EE33"), @@ -372,14 +386,14 @@ minetest.register_craftitem("mcl_potions:leaping_2", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.4, mcl_potions.DURATION_2) + mcl_potions.leaping_func(user, 2.25, mcl_potions.DURATION_2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00EE33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.4, mcl_potions.DURATION_2) + mcl_potions.leaping_func(user, 2.25, mcl_potions.DURATION_2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00EE33") return itemstack @@ -388,6 +402,7 @@ minetest.register_craftitem("mcl_potions:leaping_2", { minetest.register_craftitem("mcl_potions:leaping_plus", { description = S("Leaping Potion +"), + _tt_help = S("+50% | 8:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#00DD33"), inventory_image = potion_image("#00DD33"), @@ -395,14 +410,14 @@ minetest.register_craftitem("mcl_potions:leaping_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.2, mcl_potions.DURATION_PLUS) + mcl_potions.leaping_func(user, 1.5, mcl_potions.DURATION_PLUS) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00DD33") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.leaping_func(user, 1.2, mcl_potions.DURATION_PLUS) + mcl_potions.leaping_func(user, 1.5, mcl_potions.DURATION_PLUS) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#00DD33") return itemstack @@ -412,6 +427,7 @@ minetest.register_craftitem("mcl_potions:leaping_plus", { minetest.register_craftitem("mcl_potions:weakness", { description = S("Weakness Potion"), + _tt_help = S("No effect | 1:30"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#6600AA"), inventory_image = potion_image("#6600AA"), @@ -419,14 +435,14 @@ minetest.register_craftitem("mcl_potions:weakness", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.weakness_func(user, 1.2, mcl_potions.DURATION_2) + mcl_potions.weakness_func(user, 1.2, mcl_potions.DURATION*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#6600AA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.weakness_func(user, 1.2, mcl_potions.DURATION_2) + mcl_potions.weakness_func(user, 1.2, mcl_potions.DURATION*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#6600AA") return itemstack @@ -435,6 +451,7 @@ minetest.register_craftitem("mcl_potions:weakness", { minetest.register_craftitem("mcl_potions:weakness_plus", { description = S("Weakness Potion +"), + _tt_help = S("No effect | 4:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#7700BB"), inventory_image = potion_image("#7700BB"), @@ -459,6 +476,7 @@ minetest.register_craftitem("mcl_potions:weakness_plus", { minetest.register_craftitem("mcl_potions:poison", { description = S("Poison Potion"), + _tt_help = S("-1/2 Heart / 2.5sec | 0:45"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#225533"), inventory_image = potion_image("#225533"), @@ -482,6 +500,7 @@ minetest.register_craftitem("mcl_potions:poison", { minetest.register_craftitem("mcl_potions:poison_2", { description = S("Poison Potion II"), + _tt_help = S("-1/2 Heart / 1.2sec | 0:21"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#447755"), inventory_image = potion_image("#447755"), @@ -505,6 +524,7 @@ minetest.register_craftitem("mcl_potions:poison_2", { minetest.register_craftitem("mcl_potions:poison_plus", { description = S("Poison Potion +"), + _tt_help = S("-1/2 Heart / 2.5sec | 1:30"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#336644"), inventory_image = potion_image("#336644"), @@ -512,14 +532,14 @@ minetest.register_craftitem("mcl_potions:poison_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.poison_func(user, 2.5, mcl_potions.DURATION_2) + mcl_potions.poison_func(user, 2.5, mcl_potions.DURATION*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#336644") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.poison_func(user, 2.5, mcl_potions.DURATION_2) + mcl_potions.poison_func(user, 2.5, mcl_potions.DURATION*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#336644") return itemstack @@ -529,6 +549,7 @@ minetest.register_craftitem("mcl_potions:poison_plus", { minetest.register_craftitem("mcl_potions:regeneration", { description = S("Regeneration Potion"), + _tt_help = S("+1/2 Heart / 2.5sec | 0:45"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#A52BB2"), inventory_image = potion_image("#A52BB2"), @@ -536,14 +557,14 @@ minetest.register_craftitem("mcl_potions:regeneration", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 2.5, mcl_potions.DURATION*mcl_potions.INV_FACTOR*mcl_potions.INV_FACTOR) + mcl_potions.regeneration_func(user, 2.5, mcl_potions.DURATION*mcl_potions.INV_FACTOR^2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#A52BB2") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 2.5, mcl_potions.DURATION*mcl_potions.INV_FACTOR*mcl_potions.INV_FACTOR) + mcl_potions.regeneration_func(user, 2.5, mcl_potions.DURATION*mcl_potions.INV_FACTOR^2) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#A52BB2") return itemstack @@ -552,6 +573,7 @@ minetest.register_craftitem("mcl_potions:regeneration", { minetest.register_craftitem("mcl_potions:regeneration_2", { description = S("Regeneration Potion II"), + _tt_help = S("+1/2 Heart / 1.2sec | 0:22"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#B52CC2"), inventory_image = potion_image("#B52CC2"), @@ -559,14 +581,14 @@ minetest.register_craftitem("mcl_potions:regeneration_2", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 1.2, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR*mcl_potions.INV_FACTOR + 1) + mcl_potions.regeneration_func(user, 1.2, mcl_potions.DURATION*mcl_potions.INV_FACTOR^3 + 1) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#B52CC2") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 1.2, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR*mcl_potions.INV_FACTOR + 1) + mcl_potions.regeneration_func(user, 1.2, mcl_potions.DURATION*mcl_potions.INV_FACTOR^3 + 1) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#B52CC2") return itemstack @@ -575,6 +597,7 @@ minetest.register_craftitem("mcl_potions:regeneration_2", { minetest.register_craftitem("mcl_potions:regeneration_plus", { description = S("Regeneration Potion +"), + _tt_help = S("+1/2 Heart / 2.5sec | 1:30"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#C53DD3"), inventory_image = potion_image("#C53DD3"), @@ -582,14 +605,14 @@ minetest.register_craftitem("mcl_potions:regeneration_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 2.5, mcl_potions.DURATION_2) + mcl_potions.regeneration_func(user, 2.5, mcl_potions.DURATION*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#C53DD3") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.regeneration_func(user, 2.5, mcl_potions.DURATION_2) + mcl_potions.regeneration_func(user, 2.5, mcl_potions.DURATION*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#C53DD3") return itemstack @@ -599,6 +622,7 @@ minetest.register_craftitem("mcl_potions:regeneration_plus", { minetest.register_craftitem("mcl_potions:invisibility", { description = S("Invisibility Potion"), + _tt_help = S("3:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#B0B0B0"), inventory_image = potion_image("#B0B0B0"), @@ -622,6 +646,7 @@ minetest.register_craftitem("mcl_potions:invisibility", { minetest.register_craftitem("mcl_potions:invisibility_plus", { description = S("Invisibility Potion +"), + _tt_help = S("8:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#A0A0A0"), inventory_image = potion_image("#A0A0A0"), @@ -653,6 +678,7 @@ end) minetest.register_craftitem("mcl_potions:water_breathing", { description = S("Water Breathing Potion"), + _tt_help = S("3:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#0000AA"), inventory_image = potion_image("#0000AA"), @@ -676,6 +702,7 @@ minetest.register_craftitem("mcl_potions:water_breathing", { minetest.register_craftitem("mcl_potions:water_breathing_plus", { description = S("Water Breathing Potion +"), + _tt_help = S("8:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#0000CC"), inventory_image = potion_image("#0000CC"), @@ -700,6 +727,7 @@ minetest.register_craftitem("mcl_potions:water_breathing_plus", { minetest.register_craftitem("mcl_potions:fire_resistance", { description = S("Fire Resistance Potion"), + _tt_help = S("3:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#D0A040"), inventory_image = potion_image("#D0A040"), @@ -723,6 +751,7 @@ minetest.register_craftitem("mcl_potions:fire_resistance", { minetest.register_craftitem("mcl_potions:fire_resistance_plus", { description = S("Fire Resistance Potion +"), + _tt_help = S("8:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#E0B050"), inventory_image = potion_image("#E0B050"), From 34631dd32e8639848c49f3872a5b76e3d549ebfc Mon Sep 17 00:00:00 2001 From: Brandon Date: Sun, 28 Jun 2020 16:45:49 -0400 Subject: [PATCH 087/108] Get fire resistance working. --- mods/ITEMS/mcl_potions/functions.lua | 59 ++++++++++++++++++++++++++++ mods/ITEMS/mcl_potions/init.lua | 2 +- 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index aec3a84045..36933dfc77 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -7,7 +7,12 @@ local is_water_breathing = {} local is_leaping = {} local is_swift = {} local is_cat = {} +local is_fire_proof = {} +local fire_nodes = {["mcl_core:lava_flowing"]=true, + ["mcl_core:lava_source"]=true, + ["mcl_fire:eternal_fire"]=true, + ["mcl_fire:fire"]=true} minetest.register_globalstep(function(dtime) @@ -185,8 +190,48 @@ minetest.register_globalstep(function(dtime) end + -- Check for Fire Proof players + for player, vals in pairs(is_fire_proof) do + + if is_fire_proof[player] and player:get_properties() then + + player = player or player:get_luaentity() + + is_fire_proof[player].timer = is_fire_proof[player].timer + dtime + + if player:get_pos() then mcl_potions._add_spawner(player, "#E0B050") end + + if is_fire_proof[player].timer >= is_fire_proof[player].dur then + is_fire_proof[player] = nil + end + + elseif not player:get_properties() then + is_fire_proof[player] = nil + end + + end + end) +minetest.register_on_player_hpchange(function(player, hp_change) + + if is_fire_proof[player] and hp_change < 0 then + -- This is a bit forced, but it assumes damage is taken by fire and avoids it + -- also assumes any change in hp happens between calls to this function + local player_info = mcl_playerinfo[player:get_player_name()] + + if fire_nodes[player_info.node_head] or fire_nodes[player_info.node_feet] then + return 0 + else + return hp_change + end + + else + return hp_change + end + +end, true) + function mcl_potions._reset_player_effects(player) player = player or player:get_luaentity() @@ -229,6 +274,10 @@ function mcl_potions._reset_player_effects(player) is_cat[player] = nil end + if is_fire_proof[player] then + is_fire_proof[player] = nil + end + end minetest.register_on_leaveplayer( function(player) mcl_potions._reset_player_effects(player) end) @@ -492,7 +541,17 @@ end function mcl_potions.fire_resistance_func(player, duration) + if not is_fire_proof[player] then + is_fire_proof[player] = {dur = duration, timer = 0} + + else + + local victim = is_fire_proof[player] + victim.dur = math.max(duration, victim.dur - victim.timer) + victim.timer = 0 + + end end diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index d56ae738d6..1ce2c95047 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -306,7 +306,7 @@ local awkward_table = { ["mcl_potions:speckled_melon"] = "mcl_potions:healing", ["mcl_farming:carrot_item_gold"] = "mcl_potions:night_vision", ["mcl_core:sugar"] = "mcl_potions:swiftness", - ["mcl_mobitems:magma_cream"] = "mcl_potions:fire_resistance", --add craft + ["mcl_mobitems:magma_cream"] = "mcl_potions:fire_resistance", ["mcl_mobitems:blaze_powder"] = "mcl_potions:strength", --add craft ["mcl_fishing:pufferfish_raw"] = "mcl_potions:water_breathing", ["mcl_mobitems:ghast_tear"] = "mcl_potions:regeneration", From 34867bb48163e46c4e3727cb2af43b0c487252ed Mon Sep 17 00:00:00 2001 From: Brandon Date: Sun, 28 Jun 2020 18:28:23 -0400 Subject: [PATCH 088/108] Groundwork for weakness. --- mods/ITEMS/mcl_potions/lingering.lua | 4 ++-- mods/ITEMS/mcl_potions/potions.lua | 12 ++++++------ mods/ITEMS/mcl_potions/splash.lua | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index cbafe905d7..76f64682f4 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -229,9 +229,9 @@ register_lingering("invisibility_plus", "Lingering Invisibility +", "#A0A0A0", { }) register_lingering("weakness", "Lingering Weakness", "#6600AA", { - potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.2, mcl_potions.DURATION*mcl_potions.INV_FACTOR*0.25) end + potion_fun = function(player, redx) mcl_potions.weakness_func(player, -4, mcl_potions.DURATION*mcl_potions.INV_FACTOR*0.25) end }) register_lingering("weakness_plus", "Lingering Weakness +", "#7700BB", { - potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.4, mcl_potions.DURATION_PLUS*mcl_potions.INV_FACTOR*0.25) end + potion_fun = function(player, redx) mcl_potions.weakness_func(player, -4, mcl_potions.DURATION_PLUS*mcl_potions.INV_FACTOR*0.25) end }) diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index 7bf1724c48..1e43d38231 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -427,7 +427,7 @@ minetest.register_craftitem("mcl_potions:leaping_plus", { minetest.register_craftitem("mcl_potions:weakness", { description = S("Weakness Potion"), - _tt_help = S("No effect | 1:30"), + _tt_help = S("-2 hearts per damage | 1:30"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#6600AA"), inventory_image = potion_image("#6600AA"), @@ -435,14 +435,14 @@ minetest.register_craftitem("mcl_potions:weakness", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.weakness_func(user, 1.2, mcl_potions.DURATION*mcl_potions.INV_FACTOR) + mcl_potions.weakness_func(user, -4, mcl_potions.DURATION*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#6600AA") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.weakness_func(user, 1.2, mcl_potions.DURATION*mcl_potions.INV_FACTOR) + mcl_potions.weakness_func(user, -4, mcl_potions.DURATION*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#6600AA") return itemstack @@ -451,7 +451,7 @@ minetest.register_craftitem("mcl_potions:weakness", { minetest.register_craftitem("mcl_potions:weakness_plus", { description = S("Weakness Potion +"), - _tt_help = S("No effect | 4:00"), + _tt_help = S("-2 hearts per damage | 4:00"), _doc_items_longdesc = brewhelp, wield_image = potion_image("#7700BB"), inventory_image = potion_image("#7700BB"), @@ -459,14 +459,14 @@ minetest.register_craftitem("mcl_potions:weakness_plus", { stack_max = 1, on_place = function(itemstack, user, pointed_thing) - mcl_potions.weakness_func(user, 1.4, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR) + mcl_potions.weakness_func(user, -4, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#7700BB") return itemstack end, on_secondary_use = function(itemstack, user, pointed_thing) - mcl_potions.weakness_func(user, 1.4, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR) + mcl_potions.weakness_func(user, -4, mcl_potions.DURATION_2*mcl_potions.INV_FACTOR) minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) mcl_potions._use_potion(itemstack, user, "#7700BB") return itemstack diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index a157943ce8..b26c27909d 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -187,11 +187,11 @@ register_splash("invisibility_plus", "Splash Invisibility +", "#A0A0A0", { }) register_splash("weakness", "Splash Weakness", "#6600AA", { - potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.2, splash_DUR*mcl_potions.INV_FACTOR*redx) end + potion_fun = function(player, redx) mcl_potions.weakness_func(player, -4, splash_DUR*mcl_potions.INV_FACTOR*redx) end }) register_splash("weakness_plus", "Splash Weakness +", "#7700BB", { - potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.4, splash_DUR_pl*mcl_potions.INV_FACTOR*redx) end + potion_fun = function(player, redx) mcl_potions.weakness_func(player, -4, splash_DUR_pl*mcl_potions.INV_FACTOR*redx) end }) register_splash("water_breathing", "Splash Water Breathing", "#0000AA", { From decf0ec6246219a2134c20180ae720a8b00d7c92 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sun, 28 Jun 2020 18:47:04 -0400 Subject: [PATCH 089/108] Correct magma blocks not having fire protection. Make player not invisible when milk is drank. --- mods/ITEMS/mcl_potions/functions.lua | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 36933dfc77..f860b48fc1 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -12,7 +12,8 @@ local is_fire_proof = {} local fire_nodes = {["mcl_core:lava_flowing"]=true, ["mcl_core:lava_source"]=true, ["mcl_fire:eternal_fire"]=true, - ["mcl_fire:fire"]=true} + ["mcl_fire:fire"]=true, + ["mcl_nether:magma"]=true} minetest.register_globalstep(function(dtime) @@ -211,6 +212,27 @@ minetest.register_globalstep(function(dtime) end + -- Check for Weak players + for player, vals in pairs(is_weak) do + + if is_weak[player] and player:get_properties() then + + player = player or player:get_luaentity() + + is_weak[player].timer = is_weak[player].timer + dtime + + if player:get_pos() then mcl_potions._add_spawner(player, "#7700BB") end + + if is_weak[player].timer >= is_weak[player].dur then + is_weak[player] = nil + end + + elseif not player:get_properties() then + is_weak[player] = nil + end + + end + end) minetest.register_on_player_hpchange(function(player, hp_change) @@ -220,7 +242,7 @@ minetest.register_on_player_hpchange(function(player, hp_change) -- also assumes any change in hp happens between calls to this function local player_info = mcl_playerinfo[player:get_player_name()] - if fire_nodes[player_info.node_head] or fire_nodes[player_info.node_feet] then + if fire_nodes[player_info.node_head] or fire_nodes[player_info.node_feet] or fire_nodes[player_info.node_stand] then return 0 else return hp_change @@ -237,6 +259,7 @@ function mcl_potions._reset_player_effects(player) player = player or player:get_luaentity() if is_invisible[player] then + mcl_potions.make_invisible(player, false) is_invisible[player] = nil end From 2c1b4e518ce4ca947acf209d9cb9a09247e7d7b1 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sun, 28 Jun 2020 20:31:08 -0400 Subject: [PATCH 090/108] Add strength potions --- mods/ITEMS/mcl_potions/functions.lua | 42 +++++++++++++++++ mods/ITEMS/mcl_potions/init.lua | 4 +- mods/ITEMS/mcl_potions/lingering.lua | 12 +++++ mods/ITEMS/mcl_potions/potions.lua | 70 ++++++++++++++++++++++++++++ mods/ITEMS/mcl_potions/splash.lua | 12 +++++ 5 files changed, 138 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index f860b48fc1..5c7f00ead7 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -233,6 +233,27 @@ minetest.register_globalstep(function(dtime) end + -- Check for Strong players + for player, vals in pairs(is_strong) do + + if is_strong[player] and player:get_properties() then + + player = player or player:get_luaentity() + + is_strong[player].timer = is_strong[player].timer + dtime + + if player:get_pos() then mcl_potions._add_spawner(player, "#7700BB") end + + if is_strong[player].timer >= is_strong[player].dur then + is_strong[player] = nil + end + + elseif not player:get_properties() then + is_strong[player] = nil + end + + end + end) minetest.register_on_player_hpchange(function(player, hp_change) @@ -240,6 +261,7 @@ minetest.register_on_player_hpchange(function(player, hp_change) if is_fire_proof[player] and hp_change < 0 then -- This is a bit forced, but it assumes damage is taken by fire and avoids it -- also assumes any change in hp happens between calls to this function + -- it's worth noting that you don't take damage from players in this case... local player_info = mcl_playerinfo[player:get_player_name()] if fire_nodes[player_info.node_head] or fire_nodes[player_info.node_feet] or fire_nodes[player_info.node_stand] then @@ -487,6 +509,26 @@ function mcl_potions.weakness_func(player, factor, duration) for i=1,math.floor(duration) do minetest.after(i, function() mcl_potions._add_spawner(player, "#6600AA") end) end + +end + + +function mcl_potions.strength_func(player, factor, duration) + + if not is_strong[player] then + + is_strong[player] = {dur = duration, timer = 0, factor = factor} + + else + + local victim = is_strong[player] + + victim.factor = factor + victim.dur = math.max(duration, victim.dur - victim.timer) + victim.timer = 0 + + end + end diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 1ce2c95047..51e038af27 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -307,7 +307,7 @@ local awkward_table = { ["mcl_farming:carrot_item_gold"] = "mcl_potions:night_vision", ["mcl_core:sugar"] = "mcl_potions:swiftness", ["mcl_mobitems:magma_cream"] = "mcl_potions:fire_resistance", - ["mcl_mobitems:blaze_powder"] = "mcl_potions:strength", --add craft + ["mcl_mobitems:blaze_powder"] = "mcl_potions:strength", ["mcl_fishing:pufferfish_raw"] = "mcl_potions:water_breathing", ["mcl_mobitems:ghast_tear"] = "mcl_potions:regeneration", ["mcl_mobitems:spider_eye"] = "mcl_potions:poison", @@ -324,7 +324,7 @@ local output_table = { local enhancement_table = {} local extension_table = {} local potions = {"awkward", "mundane", "thick"} -for i, potion in ipairs({"healing","harming","swiftness","slowness","leaping","poison","regeneration","invisibility","weakness","water_breathing","night_vision"}) do +for i, potion in ipairs({"healing","harming","swiftness","slowness","leaping","poison","regeneration","invisibility","weakness","strength","water_breathing","night_vision"}) do table.insert(potions, potion) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 76f64682f4..2a6c77c643 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -235,3 +235,15 @@ register_lingering("weakness", "Lingering Weakness", "#6600AA", { register_lingering("weakness_plus", "Lingering Weakness +", "#7700BB", { potion_fun = function(player, redx) mcl_potions.weakness_func(player, -4, mcl_potions.DURATION_PLUS*mcl_potions.INV_FACTOR*0.25) end }) + +register_lingering("strength", "lingering Strength", "#D444D4", { + potion_fun = function(player, redx) mcl_potions.strength_func(player, 3, mcl_potions.DURATION) end +}) + +register_lingering("strength_2", "Lingering Strength II", "#D444F4", { + potion_fun = function(player, redx) mcl_potions.strength_func(player, 6, smcl_potions.DURATION_2) end +}) + +register_lingering("strength_plus", "Lingering Strength +", "#D444E4", { + potion_fun = function(player, redx) mcl_potions.strength_func(player, 3, mcl_potions.DURATION_PLUS) end +}) diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index 1e43d38231..ab98669a28 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -473,7 +473,77 @@ minetest.register_craftitem("mcl_potions:weakness_plus", { end }) +minetest.register_craftitem("mcl_potions:strength", { + description = S("Strength Potion"), + _tt_help = S("+1.5 hearts per damage | 3:00"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#D444D4"), + inventory_image = potion_image("#D444D4"), + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, + stack_max = 1, + on_place = function(itemstack, user, pointed_thing) + mcl_potions.weakness_func(user, 3, mcl_potions.DURATION) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) + mcl_potions._use_potion(itemstack, user, "#D444D4") + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.weakness_func(user, 3, mcl_potions.DURATION) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) + mcl_potions._use_potion(itemstack, user, "#D444D4") + return itemstack + end +}) + +minetest.register_craftitem("mcl_potions:strength_2", { + description = S("Strength Potion II"), + _tt_help = S("+3 hearts per damage | 1:30"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#D444E4"), + inventory_image = potion_image("#D444E4"), + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.weakness_func(user, 6, mcl_potions.DURATION_2) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) + mcl_potions._use_potion(itemstack, user, "#D444E4") + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.weakness_func(user, 6, mcl_potions.DURATION_2) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) + mcl_potions._use_potion(itemstack, user, "#D444E4") + return itemstack + end +}) + +minetest.register_craftitem("mcl_potions:strength_plus", { + description = S("Strength Potion +"), + _tt_help = S("1.5 hearts per damage | 8:00"), + _doc_items_longdesc = brewhelp, + wield_image = potion_image("#D444F4"), + inventory_image = potion_image("#D444F4"), + groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, + stack_max = 1, + + on_place = function(itemstack, user, pointed_thing) + mcl_potions.weakness_func(user, 3, mcl_potions.DURATION_PLUS) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) + mcl_potions._use_potion(itemstack, user, "#D444F4") + return itemstack + end, + + on_secondary_use = function(itemstack, user, pointed_thing) + mcl_potions.weakness_func(user, 3, mcl_potions.DURATION_PLUS) + minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing) + mcl_potions._use_potion(itemstack, user, "#D444F4") + return itemstack + end +}) minetest.register_craftitem("mcl_potions:poison", { description = S("Poison Potion"), _tt_help = S("-1/2 Heart / 2.5sec | 0:45"), diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index b26c27909d..62d883b393 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -194,6 +194,18 @@ register_splash("weakness_plus", "Splash Weakness +", "#7700BB", { potion_fun = function(player, redx) mcl_potions.weakness_func(player, -4, splash_DUR_pl*mcl_potions.INV_FACTOR*redx) end }) +register_splash("strength", "Splash Strength", "#D444D4", { + potion_fun = function(player, redx) mcl_potions.strength_func(player, 3, splash_DUR*redx) end +}) + +register_splash("strength_2", "Splash Strength II", "#D444F4", { + potion_fun = function(player, redx) mcl_potions.strength_func(player, 6, splash_DUR_2*redx) end +}) + +register_splash("strength_plus", "Splash Strength +", "#D444E4", { + potion_fun = function(player, redx) mcl_potions.strength_func(player, 3, splash_DUR_pl*redx) end +}) + register_splash("water_breathing", "Splash Water Breathing", "#0000AA", { potion_fun = function(player, redx) mcl_potions.water_breathing_func(player, splash_DUR*redx) end }) From 04a96e42ed1257f819b0ae1407fe95a1a30eebce Mon Sep 17 00:00:00 2001 From: Brandon Date: Sun, 28 Jun 2020 20:32:32 -0400 Subject: [PATCH 091/108] Correct capitalize "L" in lingering --- mods/ITEMS/mcl_potions/lingering.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 2a6c77c643..6c66398b76 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -236,7 +236,7 @@ register_lingering("weakness_plus", "Lingering Weakness +", "#7700BB", { potion_fun = function(player, redx) mcl_potions.weakness_func(player, -4, mcl_potions.DURATION_PLUS*mcl_potions.INV_FACTOR*0.25) end }) -register_lingering("strength", "lingering Strength", "#D444D4", { +register_lingering("strength", "Lingering Strength", "#D444D4", { potion_fun = function(player, redx) mcl_potions.strength_func(player, 3, mcl_potions.DURATION) end }) From 05d28af9e110f825f08278dd91fecd07b34bc48e Mon Sep 17 00:00:00 2001 From: Brandon Date: Mon, 29 Jun 2020 17:57:53 -0400 Subject: [PATCH 092/108] Add fire resistance splash/lingering potions --- mods/ITEMS/mcl_potions/lingering.lua | 8 ++++++++ mods/ITEMS/mcl_potions/splash.lua | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 6c66398b76..3cfbb3eca6 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -236,6 +236,14 @@ register_lingering("weakness_plus", "Lingering Weakness +", "#7700BB", { potion_fun = function(player, redx) mcl_potions.weakness_func(player, -4, mcl_potions.DURATION_PLUS*mcl_potions.INV_FACTOR*0.25) end }) +register_splash("fire_resistance", "Lingering Fire Resistance", "#D0A040", { + potion_fun = function(player, redx) mcl_potions.fire_resistance_func(player, mcl_potions.DURATION) end +}) + +register_splash("fire_resistance_plus", "Lingering Fire Resistance +", "#E0B050", { + potion_fun = function(player, redx) mcl_potions.fire_resistance_func(player, mcl_potions.DURATION_PLUS) end +}) + register_lingering("strength", "Lingering Strength", "#D444D4", { potion_fun = function(player, redx) mcl_potions.strength_func(player, 3, mcl_potions.DURATION) end }) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 62d883b393..21076ee5c0 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -214,11 +214,11 @@ register_splash("water_breathing_plus", "Splash Water Breathing +", "#0000CC", { potion_fun = function(player, redx) mcl_potions.water_breathing_func(player, splash_DUR_pl*redx) end }) -register_splash("water_breathing_plus", "Splash Fire Resistance", "#D0A040", { +register_splash("fire_resistance", "Splash Fire Resistance", "#D0A040", { potion_fun = function(player, redx) mcl_potions.fire_resistance_func(player, splash_DUR*redx) end }) -register_splash("water_breathing_plus", "Splash Fire Resistance +", "#E0B050", { +register_splash("fire_resistance_plus", "Splash Fire Resistance +", "#E0B050", { potion_fun = function(player, redx) mcl_potions.fire_resistance_func(player, splash_DUR_pl*redx) end }) From c14b5a974bf7b7a94b18a33cf1e1d4400e4f25ea Mon Sep 17 00:00:00 2001 From: Brandon Date: Mon, 29 Jun 2020 17:58:48 -0400 Subject: [PATCH 093/108] Correct splash call --- mods/ITEMS/mcl_potions/lingering.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 3cfbb3eca6..74cff8086a 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -236,11 +236,11 @@ register_lingering("weakness_plus", "Lingering Weakness +", "#7700BB", { potion_fun = function(player, redx) mcl_potions.weakness_func(player, -4, mcl_potions.DURATION_PLUS*mcl_potions.INV_FACTOR*0.25) end }) -register_splash("fire_resistance", "Lingering Fire Resistance", "#D0A040", { +register_lingering("fire_resistance", "Lingering Fire Resistance", "#D0A040", { potion_fun = function(player, redx) mcl_potions.fire_resistance_func(player, mcl_potions.DURATION) end }) -register_splash("fire_resistance_plus", "Lingering Fire Resistance +", "#E0B050", { +register_lingering("fire_resistance_plus", "Lingering Fire Resistance +", "#E0B050", { potion_fun = function(player, redx) mcl_potions.fire_resistance_func(player, mcl_potions.DURATION_PLUS) end }) From 0ed66727be254ee7de88afe1d291ca78a1644f21 Mon Sep 17 00:00:00 2001 From: Brandon Date: Tue, 30 Jun 2020 18:40:04 -0400 Subject: [PATCH 094/108] Add nether fire nodes to fire resistance --- mods/ITEMS/mcl_potions/functions.lua | 48 ++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 5c7f00ead7..7b5cd395f4 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -9,11 +9,14 @@ local is_swift = {} local is_cat = {} local is_fire_proof = {} -local fire_nodes = {["mcl_core:lava_flowing"]=true, - ["mcl_core:lava_source"]=true, - ["mcl_fire:eternal_fire"]=true, - ["mcl_fire:fire"]=true, - ["mcl_nether:magma"]=true} +local is_fire_node = { ["mcl_core:lava_flowing"]=true, + ["mcl_core:lava_source"]=true, + ["mcl_fire:eternal_fire"]=true, + ["mcl_fire:fire"]=true, + ["mcl_nether:magma"]=true, + ["mcl_nether:nether_lava_source"]=true, + ["mcl_nether:nether_lava_flowing"]=true, + ["mcl_nether:nether_lava_source"]=true} minetest.register_globalstep(function(dtime) @@ -264,7 +267,7 @@ minetest.register_on_player_hpchange(function(player, hp_change) -- it's worth noting that you don't take damage from players in this case... local player_info = mcl_playerinfo[player:get_player_name()] - if fire_nodes[player_info.node_head] or fire_nodes[player_info.node_feet] or fire_nodes[player_info.node_stand] then + if is_fire_node[player_info.node_head] or is_fire_node[player_info.node_feet] or is_fire_node[player_info.node_stand] then return 0 else return hp_change @@ -276,6 +279,22 @@ minetest.register_on_player_hpchange(function(player, hp_change) end, true) + +-- -- If a player is punched and is a weak player, damage by 2 additional hearts +-- minetest.register_on_player_hpchange(function(player, hp_change) +-- +-- if is_weak[player] and hp_change < 0 then +-- +-- -- prevent weakness from healing the victim +-- return math.min(hp_change - 4, 0) +-- +-- else +-- return hp_change +-- end +-- +-- end, true) + + function mcl_potions._reset_player_effects(player) player = player or player:get_luaentity() @@ -504,10 +523,19 @@ end function mcl_potions.weakness_func(player, factor, duration) - player:set_attribute("weakness", tostring(factor)) - minetest.after(duration, function() player:set_attribute("weakness", tostring(0)) end ) - for i=1,math.floor(duration) do - minetest.after(i, function() mcl_potions._add_spawner(player, "#6600AA") end) + + if not is_weak[player] then + + is_weak[player] = {dur = duration, timer = 0, factor = factor} + + else + + local victim = is_weak[player] + + victim.factor = factor + victim.dur = math.max(duration, victim.dur - victim.timer) + victim.timer = 0 + end end From b188fb4e95a952236e68bbe2bd032d1019ae801b Mon Sep 17 00:00:00 2001 From: Brandon Date: Tue, 30 Jun 2020 18:43:05 -0400 Subject: [PATCH 095/108] Fixed minetest.env:add_entity ==> remove .env --- mods/ITEMS/mcl_potions/lingering.lua | 2 +- mods/ITEMS/mcl_potions/splash.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 74cff8086a..8798275d2f 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -75,7 +75,7 @@ local function register_lingering(name, descr, color, def) local velocity = 10 local dir = placer:get_look_dir(); local pos = placer:getpos(); - local obj = minetest.env:add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying") + local obj = minetest.add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying") obj:setvelocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity}) obj:setacceleration({x=0, y=-9.8, z=0}) if not minetest.settings:get_bool("creative_mode") then diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 21076ee5c0..b362b98377 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -17,7 +17,7 @@ local function register_splash(name, descr, color, def) local velocity = 10 local dir = placer:get_look_dir(); local pos = placer:get_pos(); - local obj = minetest.env:add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying") + local obj = minetest.add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying") obj:set_velocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity}) obj:set_acceleration({x=0, y=-9.8, z=0}) if not minetest.settings:get_bool("creative_mode") then From eee75f89887c5269cc2331256be8b4bfa896c275 Mon Sep 17 00:00:00 2001 From: Brandon Date: Tue, 30 Jun 2020 18:56:27 -0400 Subject: [PATCH 096/108] Reduce alpha on post color effect for lava to allow some viewing range - similar to MC --- mods/ITEMS/mcl_core/nodes_liquid.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index 7791322581..29fc0d6dc9 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -140,7 +140,7 @@ minetest.register_node("mcl_core:lava_flowing", { liquid_range = 3, damage_per_second = 4*2, _mcl_node_death_message = lava_death_messages, - post_effect_color = {a=255, r=208, g=73, b=10}, + post_effect_color = {a=245, r=208, g=73, b=10}, groups = { lava=3, liquid=2, destroys_items=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 @@ -195,7 +195,7 @@ S("• When lava is directly above water, the water turns into stone."), liquid_range = 3, damage_per_second = 4*2, _mcl_node_death_message = lava_death_messages, - post_effect_color = {a=255, r=208, g=73, b=10}, + post_effect_color = {a=245, r=208, g=73, b=10}, stack_max = 64, groups = { lava=3, liquid=2, destroys_items=1, not_in_creative_inventory=1, dig_by_piston=1}, _mcl_blast_resistance = 100, From 9301e03b522a17b4e14ea29eaf903485224ebabf Mon Sep 17 00:00:00 2001 From: Brandon Date: Tue, 30 Jun 2020 20:05:08 -0400 Subject: [PATCH 097/108] Update fire resistance to allow damage if "drowning" in lava --- mods/ITEMS/mcl_potions/functions.lua | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 7b5cd395f4..0b27bdfddb 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -59,7 +59,7 @@ minetest.register_globalstep(function(dtime) if player._cmi_is_mob then player.health = math.max(player.health - 1, 1) else - player:set_hp( math.max(player:get_hp() - 1, 1) ) + player:set_hp( math.max(player:get_hp() - 1, 1), { type = "punch", from = "potion" }) end is_poisoned[player].hit_timer = 0 @@ -259,6 +259,7 @@ minetest.register_globalstep(function(dtime) end) +-- Prevent damage to player with Fire Resistance enabled minetest.register_on_player_hpchange(function(player, hp_change) if is_fire_proof[player] and hp_change < 0 then @@ -268,7 +269,11 @@ minetest.register_on_player_hpchange(function(player, hp_change) local player_info = mcl_playerinfo[player:get_player_name()] if is_fire_node[player_info.node_head] or is_fire_node[player_info.node_feet] or is_fire_node[player_info.node_stand] then - return 0 + if player:get_breath() == 0 then -- probably drowning + return -1 + else + return 0 + end else return hp_change end @@ -466,7 +471,7 @@ function mcl_potions.healing_func(player, hp) if obj and obj._cmi_is_mob then obj.health = obj.health + hp else - player:set_hp(player:get_hp() + hp) + player:set_hp(player:get_hp() + hp, { type = "punch", from = "potion" }) end end From d3c9006e6ec1733c85bc94434b54c502473ddf3c Mon Sep 17 00:00:00 2001 From: Brandon Date: Tue, 30 Jun 2020 20:54:07 -0400 Subject: [PATCH 098/108] Correct splash potions to hit players --- mods/ITEMS/mcl_potions/functions.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 0b27bdfddb..08ca9b5df7 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -360,8 +360,10 @@ function mcl_potions.is_obj_hit(self, pos) if entity and entity.name ~= self.object:get_luaentity().name then - if object:is_player() or entity._cmi_is_mob then return true end + if entity._cmi_is_mob then return true end + elseif object:is_player() then + return true end end From e1b428dbd1fe333e8a56e2073754ca69ceef8023 Mon Sep 17 00:00:00 2001 From: Brandon Date: Tue, 30 Jun 2020 20:56:47 -0400 Subject: [PATCH 099/108] Add fire resistance + recipe. --- mods/ITEMS/mcl_potions/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_potions/init.lua b/mods/ITEMS/mcl_potions/init.lua index 51e038af27..3aa5fa3728 100644 --- a/mods/ITEMS/mcl_potions/init.lua +++ b/mods/ITEMS/mcl_potions/init.lua @@ -324,7 +324,7 @@ local output_table = { local enhancement_table = {} local extension_table = {} local potions = {"awkward", "mundane", "thick"} -for i, potion in ipairs({"healing","harming","swiftness","slowness","leaping","poison","regeneration","invisibility","weakness","strength","water_breathing","night_vision"}) do +for i, potion in ipairs({"healing","harming","swiftness","slowness","leaping","poison","regeneration","invisibility","fire_resistance","weakness","strength","water_breathing","night_vision"}) do table.insert(potions, potion) From 5db80b3ec52e6151cf1b409a7780bacc89fb8098 Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 2 Jul 2020 17:52:09 -0400 Subject: [PATCH 100/108] Allow drowning damage when drowning in lava. --- mods/ITEMS/mcl_potions/functions.lua | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 08ca9b5df7..aa07bab16d 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -9,14 +9,6 @@ local is_swift = {} local is_cat = {} local is_fire_proof = {} -local is_fire_node = { ["mcl_core:lava_flowing"]=true, - ["mcl_core:lava_source"]=true, - ["mcl_fire:eternal_fire"]=true, - ["mcl_fire:fire"]=true, - ["mcl_nether:magma"]=true, - ["mcl_nether:nether_lava_source"]=true, - ["mcl_nether:nether_lava_flowing"]=true, - ["mcl_nether:nether_lava_source"]=true} minetest.register_globalstep(function(dtime) @@ -259,6 +251,16 @@ minetest.register_globalstep(function(dtime) end) + +local is_fire_node = { ["mcl_core:lava_flowing"]=true, + ["mcl_core:lava_source"]=true, + ["mcl_fire:eternal_fire"]=true, + ["mcl_fire:fire"]=true, + ["mcl_nether:magma"]=true, + ["mcl_nether:nether_lava_source"]=true, + ["mcl_nether:nether_lava_flowing"]=true, + ["mcl_nether:nether_lava_source"]=true} + -- Prevent damage to player with Fire Resistance enabled minetest.register_on_player_hpchange(function(player, hp_change) @@ -269,7 +271,7 @@ minetest.register_on_player_hpchange(function(player, hp_change) local player_info = mcl_playerinfo[player:get_player_name()] if is_fire_node[player_info.node_head] or is_fire_node[player_info.node_feet] or is_fire_node[player_info.node_stand] then - if player:get_breath() == 0 then -- probably drowning + if player:get_breath() == 0 and hp_change > -4 then -- probably drowning return -1 else return 0 @@ -363,7 +365,7 @@ function mcl_potions.is_obj_hit(self, pos) if entity._cmi_is_mob then return true end elseif object:is_player() then - return true + return true end end From b4c658904b282bd4fdd95c6eea307210d9fa7c68 Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 2 Jul 2020 18:04:39 -0400 Subject: [PATCH 101/108] Fix drowning damage --- mods/ITEMS/mcl_potions/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index aa07bab16d..1e89ea3ec2 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -271,7 +271,7 @@ minetest.register_on_player_hpchange(function(player, hp_change) local player_info = mcl_playerinfo[player:get_player_name()] if is_fire_node[player_info.node_head] or is_fire_node[player_info.node_feet] or is_fire_node[player_info.node_stand] then - if player:get_breath() == 0 and hp_change > -4 then -- probably drowning + if player:get_breath() == 0 and hp_change == -4 then -- probably drowning return -1 else return 0 From b2d634acb881751b70e949dc82816f014129bcec Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 2 Jul 2020 18:05:46 -0400 Subject: [PATCH 102/108] Correct drowning damage --- mods/ITEMS/mcl_potions/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 1e89ea3ec2..899fb83d1b 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -272,7 +272,7 @@ minetest.register_on_player_hpchange(function(player, hp_change) if is_fire_node[player_info.node_head] or is_fire_node[player_info.node_feet] or is_fire_node[player_info.node_stand] then if player:get_breath() == 0 and hp_change == -4 then -- probably drowning - return -1 + return hp_change else return 0 end From d131cbadefb2c65bc0fff4224c0a011bf7c7728b Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 3 Jul 2020 18:12:02 -0400 Subject: [PATCH 103/108] Allow drowning in lava.... --- mods/ITEMS/mcl_potions/functions.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 899fb83d1b..6100a65982 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -271,13 +271,13 @@ minetest.register_on_player_hpchange(function(player, hp_change) local player_info = mcl_playerinfo[player:get_player_name()] if is_fire_node[player_info.node_head] or is_fire_node[player_info.node_feet] or is_fire_node[player_info.node_stand] then - if player:get_breath() == 0 and hp_change == -4 then -- probably drowning - return hp_change - else + -- if player:get_breath() == 0 and hp_change == -4 then -- probably drowning + -- return hp_change + -- else return 0 - end - else - return hp_change + -- end + -- else + -- return hp_change end else From 860317168b7f03979d1026797c8db1e0b954797c Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 3 Jul 2020 18:33:24 -0400 Subject: [PATCH 104/108] Remove reduntant empty bottle images --- .../textures/mcl_brewing_bubble_sprite.png | Bin 240 -> 243 bytes mods/ITEMS/mcl_potions/init.lua | 6 +++--- mods/ITEMS/mcl_potions/potions.lua | 2 +- ...nkable.png => mcl_potions_potion_bottle.png} | Bin .../mcl_potions_potion_bottle_empty.png | Bin 214 -> 0 bytes 5 files changed, 4 insertions(+), 4 deletions(-) rename mods/ITEMS/mcl_potions/textures/{mcl_potions_potion_bottle_drinkable.png => mcl_potions_potion_bottle.png} (100%) delete mode 100644 mods/ITEMS/mcl_potions/textures/mcl_potions_potion_bottle_empty.png diff --git a/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubble_sprite.png b/mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubble_sprite.png index 119b7b857cda509fca2b2c01c0a302a77990f90f..74447439e4cf1e7e0756c851850eb7841c977065 100644 GIT binary patch delta 60 zcmeys_?dCSK2rrx7sn6|+2jO!hBK#dF!erSCFiU)bR zIEGX(COfe8GzEB_2nb*}Q{ekPgTctc%1cYJ$FF~yXu`26eSKO6hm*_Q)n`1cSh865 zjE2ocMZUz6l8y#RQMrI)J$-H+SBk`^dnqsjUCH!8iepOlZII~zopr04`cn AH~;_u From 31aa880e8571f83d30fe9c4f277af40ae8ce36e7 Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 3 Jul 2020 20:31:53 -0400 Subject: [PATCH 105/108] fix local declaration --- mods/ITEMS/mcl_potions/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 6100a65982..f7e44d076a 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -458,7 +458,7 @@ end function mcl_potions.healing_func(player, hp) - obj = player:get_luaentity() + local obj = player:get_luaentity() if is_zombie[player:get_entity_name()] then hp = -hp end From 6cefec8cbf16b2f0cf009f8dbf5eefbc0af18620 Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 3 Jul 2020 20:38:35 -0400 Subject: [PATCH 106/108] Fix allow drowning for lava... --- mods/ITEMS/mcl_potions/functions.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index f7e44d076a..aae3975de8 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -276,8 +276,8 @@ minetest.register_on_player_hpchange(function(player, hp_change) -- else return 0 -- end - -- else - -- return hp_change + else + return hp_change end else From f0e9727b851fc328b05429e9bcc793c4e72fcd80 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 4 Jul 2020 21:28:02 -0400 Subject: [PATCH 107/108] Add all brewitems to creative inventory --- mods/ITEMS/mcl_core/craftitems.lua | 2 +- mods/ITEMS/mcl_fishing/init.lua | 19 +++++++++---------- mods/ITEMS/mcl_mobitems/init.lua | 8 ++++---- mods/ITEMS/mcl_nether/init.lua | 2 +- mods/ITEMS/mcl_nether/nether_wart.lua | 4 ++-- 5 files changed, 17 insertions(+), 18 deletions(-) diff --git a/mods/ITEMS/mcl_core/craftitems.lua b/mods/ITEMS/mcl_core/craftitems.lua index 9dc9d37052..122445095f 100644 --- a/mods/ITEMS/mcl_core/craftitems.lua +++ b/mods/ITEMS/mcl_core/craftitems.lua @@ -121,7 +121,7 @@ minetest.register_craftitem("mcl_core:sugar", { _doc_items_longdesc = S("Sugar comes from sugar canes and is used to make sweet foods."), inventory_image = "mcl_core_sugar.png", stack_max = 64, - groups = { craftitem = 1 }, + groups = { craftitem = 1, brewitem=1 }, }) minetest.register_craftitem("mcl_core:bowl",{ diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 53eefdad36..aee940931f 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -32,7 +32,7 @@ local fish = function(itemstack, player) local num = 0 local ent = nil local noent = true - + --Check for bobber if so handle. for n = 1, #objs do ent = objs[n]:get_luaentity() @@ -157,7 +157,7 @@ local bobber_on_step = function(self, dtime) epos.y = math.floor(epos.y) local node = minetest.get_node(epos) local def = minetest.registered_nodes[node.name] - + --If we have no player, remove self. if self.player == nil or self.player == "" then self.object:remove() @@ -168,7 +168,7 @@ local bobber_on_step = function(self, dtime) self.object:remove() return end - + --Check if player is nearby if self._tick % 5 == 0 and self.player ~= nil and player ~= nil then --Destroy bobber if item not wielded. @@ -177,7 +177,7 @@ local bobber_on_step = function(self, dtime) self.object:remove() return end - + --Destroy bobber if player is too far away. local objpos = self.object:get_pos() local playerpos = player:get_pos() @@ -200,7 +200,7 @@ local bobber_on_step = function(self, dtime) self.object:remove() return end - + end -- If in water, then bob. if def.liquidtype == "source" and minetest.get_item_group(def.name, "water") ~= 0 then @@ -251,7 +251,7 @@ local bobber_on_step = function(self, dtime) end end end -end +end -- TODO: Destroy when hitting a solid node --if self._lastpos.x~=nil then @@ -273,7 +273,7 @@ minetest.register_on_leaveplayer(function(player) local num = 0 local ent = nil local noent = true - + for n = 1, #objs do ent = objs[n]:get_luaentity() if ent then @@ -292,7 +292,7 @@ minetest.register_on_dieplayer(function(player) local num = 0 local ent = nil local noent = true - + for n = 1, #objs do ent = objs[n]:get_luaentity() if ent then @@ -426,7 +426,6 @@ minetest.register_craftitem("mcl_fishing:pufferfish_raw", { on_place = minetest.item_eat(1), on_secondary_use = minetest.item_eat(1), stack_max = 64, - groups = { food=2, eatable=1 }, + groups = { food=2, eatable=1, brewitem = 1 }, _mcl_saturation = 0.2, }) - diff --git a/mods/ITEMS/mcl_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index 1f8a13ff61..e2626c6627 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -169,7 +169,7 @@ minetest.register_craftitem("mcl_mobitems:spider_eye", { wield_image = "mcl_mobitems_spider_eye.png", on_place = minetest.item_eat(2), on_secondary_use = minetest.item_eat(2), - groups = { food = 2, eatable = 2 }, + groups = { food = 2, eatable = 2, brewitem = 1 }, _mcl_saturation = 3.2, stack_max = 64, }) @@ -224,7 +224,7 @@ minetest.register_craftitem("mcl_mobitems:ghast_tear", { wield_image = "mcl_mobitems_ghast_tear.png", inventory_image = "mcl_mobitems_ghast_tear.png", -- TODO: Reveal item when it's useful - groups = { brewitem = 1, not_in_creative_inventory = 1 }, + groups = { brewitem = 1, not_in_creative_inventory = 0 }, stack_max = 64, }) @@ -271,7 +271,7 @@ minetest.register_craftitem("mcl_mobitems:rabbit_foot", { wield_image = "mcl_mobitems_rabbit_foot.png", inventory_image = "mcl_mobitems_rabbit_foot.png", -- TODO: Reveal item when it's useful - groups = { brewitem = 1, not_in_creative_inventory = 1 }, + groups = { brewitem = 1, not_in_creative_inventory = 0 }, stack_max = 64, }) @@ -317,7 +317,7 @@ minetest.register_craftitem("mcl_mobitems:gunpowder", { _doc_items_longdesc = doc.sub.items.temp.craftitem, inventory_image = "default_gunpowder.png", stack_max = 64, - groups = { craftitem=1 }, + groups = { craftitem=1, brewitem = 1 }, }) minetest.register_tool("mcl_mobitems:carrot_on_a_stick", { diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index e7612c906f..22d295d5b8 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -229,7 +229,7 @@ minetest.register_craftitem("mcl_nether:glowstone_dust", { _doc_items_longdesc = S("Glowstone dust is the dust which comes out of broken glowstones. It is mainly used in crafting."), inventory_image = "mcl_nether_glowstone_dust.png", stack_max = 64, - groups = { craftitem=1 }, + groups = { craftitem=1, brewitem=1 }, }) minetest.register_craftitem("mcl_nether:quartz", { diff --git a/mods/ITEMS/mcl_nether/nether_wart.lua b/mods/ITEMS/mcl_nether/nether_wart.lua index 7744a1fecf..a408b96c57 100644 --- a/mods/ITEMS/mcl_nether/nether_wart.lua +++ b/mods/ITEMS/mcl_nether/nether_wart.lua @@ -85,7 +85,7 @@ minetest.register_node("mcl_nether:nether_wart", { tiles = {"mcl_nether_nether_wart_stage_2.png"}, wield_image = "mcl_nether_nether_wart_stage_2.png", inventory_image = "mcl_nether_nether_wart_stage_2.png", - selection_box = { + selection_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0.45, 0.5} @@ -135,7 +135,7 @@ minetest.register_craftitem("mcl_nether:nether_wart_item", { end end end, - groups = { craftitem = 1 }, + groups = { craftitem = 1, brewitem=1 }, }) local names = {"mcl_nether:nether_wart_0", "mcl_nether:nether_wart_1", "mcl_nether:nether_wart_2"} From c91dc25052e9c559517883ef150cfee6606ba905 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sun, 5 Jul 2020 08:16:11 -0400 Subject: [PATCH 108/108] Fixed throwing potions through portals --- mods/ITEMS/mcl_potions/lingering.lua | 2 +- mods/ITEMS/mcl_potions/splash.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 8798275d2f..1abaa4844c 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -98,7 +98,7 @@ local function register_lingering(name, descr, color, def) local node = minetest.get_node(pos) local n = node.name local d = 4 - if n ~= "air" or mcl_potions.is_obj_hit(self, pos) then + if n ~= "air" and n ~= "mcl_portals:portal" and n ~= "mcl_portals:portal_end" or mcl_potions.is_obj_hit(self, pos) then minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1}) add_lingering_effect(pos, color, def) minetest.add_particlespawner({ diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index b362b98377..483a9a0dc6 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -41,7 +41,7 @@ local function register_splash(name, descr, color, def) local n = node.name local d = 2 local redux_map = {7/8,0.5,0.25} - if n ~= "air" or mcl_potions.is_obj_hit(self, pos) then + if n ~= "air" and n ~= "mcl_portals:portal" and n ~= "mcl_portals:portal_end" or mcl_potions.is_obj_hit(self, pos) then minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1}) minetest.add_particlespawner({ amount = 50,