From fb1c1a483e1eddf6ca4dc2ddeebb494b924de0a9 Mon Sep 17 00:00:00 2001 From: cora Date: Fri, 14 Oct 2022 18:27:57 +0200 Subject: [PATCH] Add strider --- mods/ENTITIES/mobs_mc/init.lua | 2 + .../mobs_mc/models/extra_mobs_strider.b3d | Bin 0 -> 33029 bytes mods/ENTITIES/mobs_mc/strider.lua | 248 ++++++++++++++++++ .../mobs_mc/textures/extra_mobs_strider.png | Bin 0 -> 2100 bytes .../textures/extra_mobs_strider_cold.png | Bin 0 -> 2055 bytes 5 files changed, 250 insertions(+) create mode 100644 mods/ENTITIES/mobs_mc/models/extra_mobs_strider.b3d create mode 100644 mods/ENTITIES/mobs_mc/strider.lua create mode 100644 mods/ENTITIES/mobs_mc/textures/extra_mobs_strider.png create mode 100644 mods/ENTITIES/mobs_mc/textures/extra_mobs_strider_cold.png diff --git a/mods/ENTITIES/mobs_mc/init.lua b/mods/ENTITIES/mobs_mc/init.lua index a37455e13..a84a8c321 100644 --- a/mods/ENTITIES/mobs_mc/init.lua +++ b/mods/ENTITIES/mobs_mc/init.lua @@ -154,3 +154,5 @@ dofile(path .. "/glow_squid.lua") dofile(path .. "/piglin.lua") dofile(path .. "/hoglin+zoglin.lua") + +dofile(path .. "/strider.lua") diff --git a/mods/ENTITIES/mobs_mc/models/extra_mobs_strider.b3d b/mods/ENTITIES/mobs_mc/models/extra_mobs_strider.b3d new file mode 100644 index 0000000000000000000000000000000000000000..72f4e254e332239450b0e14f4a0f7334aadbc660 GIT binary patch literal 33029 zcmeHP3wTwz4-XhG5#K`h{4c!dy- zxgif|wTh2cN)bu0SmGJD7Zf2Hs8Fx1w!X0UUbMZHiel09`)BszoDAo*RC+Ibd}n>% z{`TH;{=N3vYi6zepFNMkgR_Txu87(Z(cqiLjJ}oZ@rVhflS-yem_{!*7f9ZSlq3%T zX>Dz7Wne~TX4XFh-!O8>(6A!9Y2?V8jfSW|bLldr9t?yAs zw%%ZK)E0{CgZCPC$sX(0VtjmeLs5a&tor}ve%lMBR0d^ zGF%%i+ih^sGUO6l27MNXvIoT-Eh{z3-ZJ{~j+WutXxVOqi&y4eTjc56Xr6vk@!#$#94~lVK*$XlCi!xjrE!*vs+4^mJt*zhJAA4DN_lS`9Y$)?=@yd25 zEOW2jlF2MntJZltM&(y>lFA5K%f2r4dm- z?;OWjM07b3WfD=gcaG!!M3h5BAtD;!o#Xf_BD#`@t{|d;-Z_rZ*ai_%E)zlTcrX#= z6Hy)!T@AkP9bZF4Ly2ez5nW4U&T%}9h^{B1>xgK$caGy5h-d^66%f%#?;OWB5z&oA zG>V8ud*?X*77>jhB2fNYymK7mzs6W1`Zf`b^UiU68xf5sqCz6N-8;u|5fM!wqC1G_ zPVXGY-yxz&M1+3@lf82sf0u}+644YQ`kr@=`$SYsM0b1V zIG#yF_YhGj5zX?>ah!j{^&`;kAZTMm#e?x@rOy>aMKdPOrpx-Z5B2dc&inm>XEgrZ zw6@-F{^k6oV-7a`o0Y}c&xnDIgGb&lbPFQFh>|u)l(cc9r2R=r1O@aUSg=RnV2_}| z9>IaV{g0z00tn{_9_+2LN+Ni0jzGd5L4-Ym1$zV$_6R8K5lq-4Xs|~xVQ(K=Ndy(n z5j+qC6$AkWL2yA3L=XfQ1c3%YkUB?JKqL2yD4kPrkX z#Qc--f)s+lgdj*E2v7)u6@s9IAXp&?TnK^|g5ZQ8Xdwt-2!a=aAcY`!AqZp$f*68e zg&>F_2xtg`8N&bB5zG(-HUvQpLGVHl)DQ$X1i=kK5JM2$5Cl2|K@LGMLlEQ;1Uv-6 z4&lH32zCepAA+EVAh;n2dI%B#1i=qMkV6ps5F`Q!k^lt34nY!tAR$1I3?K-42$BH= zi2;J702w}X?C4KB*q0b$I5z$f`@D7iID}1SuCB}7^k`i!;yf0MSmIpKd?wB&?&{uu&1QS!`FB=r!{(CuhRw+DUu6C{JDwl7-t^QZ*@q@w*@$<*hduUZvw!31 zon6;3aBfY*K)febJh!_#tK9hR1hcgc;v-kHtqA-1ivA3hpToO`f;aW39B z`Tr5gj@Qn(-nMyhfp^l{J&oD%+Ar4|#~a>TH+Ef@&2bU?Y%Uh>w%B<4dsw{uzc_vTJ-X#*2d743sBOs03|I8P|~shB`ph3(y{<0EelXG$pWmLDlFhXz4+hZ z#s3#x{O=f7FIMIF^vWEcY#CQC5a)?<1!L=Te6o35y#Nb{hedXJF-GspKVIpRpS)Qskat|{5%1Y{ z<=2R^13o?ffKTquuMuDYYy;;(_Ctq)YT+yNYhR&Xex;yVAb&w`*jqPQO#wOf%u0cGKqBll9m2w25YRr)zhD83W&d(Jo0d`~&hYB3IHgM9UBcK{8-Pc9 z@E7`ZpF+RvQcx|x0vO9N#C5SVzeYT8z^5NL;FB%+H3IJ>#>VPJ`#tz(t$4y~zlYwe z6<`4_mhI)ZC>r6D7kykOzyi2Eunp{Aj!lkZuz+@5JQgs0>colDCRrlT_qJCI5xD&I z3y;zs-0)Wi7mIth2ledjLHWkP#YrOICGgYZbAXbT2q^;z)1998$yGQ`fQ8>p0@XPNPRT&}xdqD)C z7dlz*_XdTu2gC~Sy;YXkfRy??l%QlxAQ=#-5C`Nspz?;Ob>N(r1^8Z_Etp^JWHR|Jmh+2r$;w`-{RQB4d3}_gf#7TMCyL zBH&`#-aX#?;NI;)`P+kw4G~D>hi40yh<@vXI&*zcZY^A5hyXtu*9G)qyKHv3IM1^; zXLh+E0&D|g`PqKy`C&z`pxoZQ!Vm!$%l5v1L8VCb{QIX1Dh&}}tm}uVPQ8H$FqUlq z8G#*>i>k!UUVFH!sLBw5L|C*l|5(57GuAKXjjc9BfU&L(4Tn~U*++bO_7R`dhgKLO zz*x3{pAB)**^7&nU#~Spz{SE=v@?!P#4%zMMBoU24k(&YS~_F;(YC*_WH0(%4UxhA zj;=~98kMRa7?mm~bX7?X;N|{Pg99jOy9AW9T>?tlE&(NNmw=MCOF&86C7`735>PVP zC154lC15}3@w<=XpZ|FMVAFEZzc8S)3IlT9rsakMFt*Xl6^zC2u~>Wz$nf5&te11r zoK4F`j;DA2rsakMxLDRZZPaoxwv0oaCToo740zFb6R1obax1m#8b<%R=5FE{{f zKwie5Kjh4H(-({Sw}N`bTS58E^u>k)uwK_^zsg@Io*J2=A0L?__vSA&9Dwa*8=x0{ z+nrw~dN!u$OBz$;ukyCK&^3x2 z|8Tz8*eO*%(<#*)<6{70WBmaAE%{}lm*5B~qV7=^L#&)YO7foJ!=w4rLH~{O7#lqezS5$~uorAix zb5IUiQDHa$>t!3bO|JLa@9K2{xgn?0Z~(@#UdAF8V&eiI16(ZEg&W7<0Ikdc&?QhZ zb@G%_%4vL6<_^6|F6g#aqgt@Rjo&C;CKkRH&=6_Nt7A_3v1q%au z@F$fKdRs51Q_c++s1H}m>BWvJ0pJmi*Qv0eFFUx*xRn5 zTJ#<2*Ov|T>kbXo5%dY**^o0Ac3W#cpK{K8es7KFx6`LHcKY;|y)_Z^2_*8v3p?t> zBe(eUk8knm7kAV}&?mq)KriQF)Ww`TSBie0_R-kp-MKP?J^?%%Y~W`@&c>_ihqG6S zH=gaIfBS47{m|@H5zqkWjm5IPhkn0Gtb4eR{`tdw^rydH6#)%ky|Hxx8=x0Dp&NS9 zCjjg~&j#F|^|HMgp1tT3fDOPdig`9%-ON?GRIMof@hm z=o3h!_t}{Cuqj*>!KVP!8$TOA7yMgV7Z&}~0vg-Qx^M)20lc57Brx} z(xmLTZ6jv)}Wr-T7H@_ffF4gsH7busH7busH7bu zsH7busH7busH7busH7busAO`Cpq1npK`SSFj9{YppW9k45c?eeU;>G-oGXwokSo9h z5@EYfSt@=rB&c5>64X7WEHzBP#UlS;d!wvEyme+!WBXlMg<%3N7FiV7Z~H4n_YDDk z@rHoD)n93tfQv`wK3%Zbryo9CYnXtG6OXV;xA+T8b01Vx!N!R7t3{VomX!kzT(%zhEy3Qz&5zgmeVUN z&=#;=(JO420PAHe+k30OQlO1pv>~7i{gs9ZuwK_*wBNU5+Ao+uB5cnoO9f&AThA#= z4HHO&<=DL2i#IRrm zMKy*AxOKtLR(D^mnE1F)7d`INb@$a8CXh()!nbS1zGXhWcbQKwe7n{#0oLpK!PSdz z0_+F)H`WjD71fB2p1toC)fgt=`j_o}cYC$?IM1))i+8tI8z$h|%UIXH_$I(uw~pO< z!#4rOx@|pYL8WMYD4@|Mau!q?Ccs#(H*V{0JHs~t_L-~qv-itI+3i6+|MsB%?EP}X z1X!X+H%hX{QS+X{QS+X{QS+X{QS+X{QS+X{QS+X{QS+ zX$gRmcDkUFcDkUFcDkUFcDkUFcDkUFcDkUFcDkUFc5Hx>cDkUFcDkUFcDkUFcDkUF zcDkUFcDkUFr`vSFMDf3G_vPZYOXlcnIv&ir{>{r8K>!kAZ||KV!i(nUi(cBFmGAG{ zh))47mJ{gaN6r%drE_(DcxzU_eSI6zDd1u`4;|^&JZSrK^K{Qy6zd(W!KI=nh9giZk$%X)wL$XOz|bgmp8-kNp!zP=%J3bi$g}MD2(JA0!+1}Xp zyK-$tBM5+tWqZeaadG}j`?LQ2aC##?1th|{@dg5LyjT!`^9>RV z;O^Z?1^`Je7+@v2V1SkQ3kE1@X9y^17YtC+E*PMsT`)jNyI_ElcEJE8?ScVH+64oY zv{MC@w4DJ;+64oYvXFq+KvTNxNWxl6JuWCG95wCGCO%O4*4ee7=Vj)GN=RtShY4I1P0(@ zIfH@$;Ef6fuzha75Ewur>};Fy<>7bEMaB<-0VKlCJ3M~_7(iJ;^G}xCmT4G(i)DNN zU>Sg(^v=0imtC6K2nOI{9eWL9!J7mOAQ9GkqiXMs+6V@a2FS+Xx2WVp(sKWdQo>@Ybx%eSI6j z09-8VjeVnjvO29148X;*-uEm6(06*w4Gh4=vflf>dP|!>CIIG!PXI2K^`hQBc=CRU zdVA*T^bi<;i)FnY(=_eu(CV}h7=VjqyWoYcOImu;ctRIrg(AedfPPJud9`1M|%g{u#)c@TwG;WqU-s$zoQtq^U z9(~VK@srDBB$vrBZ`kBA8RiXssxFi9C}*iJyG+K(NL23hU#3XOY5ewoN^%;%rOe4` z{HM<}{vUCo`V!OlPezV9-sy=TQ;c<|%qFK9+c-{6Gq!$6PBXS->QtR({A12hUv8T5 z$w*W2rcZ%RC8t4JDwUiDX}>@wr$O3jrl-R+$km*ty#IXv{4~guk*WUC^p4~-t>iQ< zd~r%n)3RjobeN`fG*f-)X<8>EQyuT{bNuyVEDwR_e)Z%u63f5bX$}}e!czfwIs&2| zTXGtS^+R$RiS@((=QNU)9lzu>l9Q33j(2!05>z5=a+teqWU<4$lf&HYaR1~m_c^EB xF!xnng8Ju&xu1*-b-cs(kf9P`lf!UrhVq6DCx_w2Ol(OG!;Ma$Iu(ZD{tXvpwAKIs literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/strider.lua b/mods/ENTITIES/mobs_mc/strider.lua new file mode 100644 index 000000000..a38955370 --- /dev/null +++ b/mods/ENTITIES/mobs_mc/strider.lua @@ -0,0 +1,248 @@ +--MCmobs v0.4 +--maikerumine +--made for MC like Survival game +--License for code WTFPL and otherwise stated in readmes + +local S = minetest.get_translator("mobs_mc") + +--################### +--################### STRIDER +--################### + + +local strider = { + type = "animal", + passive = true, + spawn_class = "passive", + hp_min = 20, + hp_max = 20, + xp_min = 9, + xp_max = 9, + armor = {fleshy = 90}, + attack_type = "dogfight", + damage = 2, + reach = 2, + collisionbox = {-.6, -0.01, -.6, .6, 1.94, .6}, + visual = "mesh", + mesh = "extra_mobs_strider.b3d", + textures = { { + "extra_mobs_strider.png", + } }, + visual_size = {x=3, y=3}, + sounds = { + }, + jump = true, + makes_footstep_sound = true, + walk_velocity = 2, + run_velocity = 4, + runaway = true, + drops = { + {name = "mcl_mobsitems:string", + chance = 1, + min = 2, + max = 5,}, + }, + animation = { + stand_speed = 15, + walk_speed = 15, + run_speed = 30, + stand_start = 5, + stand_end = 5, + walk_start = 1, + walk_end = 20, + }, + lava_damage = 0, + fire_damage = 0, + light_damage = 0, + water_damage = 5, + fear_height = 4, + view_range = 16, + fire_resistant = true, + floats_on_lava = 1, + floats = 0, + do_custom = function(self, dtime) + + if minetest.find_node_near(self.object:get_pos(), 2, "mcl_core:lava_source") ~= nil or minetest.find_node_near(self.object:get_pos(), 2, "mcl_core:lava_flowing") ~= nil or minetest.find_node_near(self.object:get_pos(), 2, "mcl_nether:nether_lava_source") ~= nil or minetest.find_node_near(self.object:get_pos(), 2, "mcl_nether:nether_lava_flowing") ~= nil then + self.walk_velocity = 2 + self.run_velocity = 4 + self.base_texture[1] = "extra_mobs_strider.png" + self.shaking = false + else + self.base_texture[1] = "extra_mobs_strider_cold.png" + self.walk_velocity = .5 + self.run_velocity = 1 + self.shaking = true + end + + self.object:set_properties({textures=self.base_texture, shaking=self.shaking, run_velocity=self.run_velocity, walk_velocity=self.walk_velocity}) + + -- set needed values if not already present + if not self.v2 then + self.v2 = 0 + self.max_speed_forward = 8 + self.max_speed_reverse = 4 + self.accel = 2 + self.terrain_type = 3 + self.driver_attach_at = {x = 0, y = 5.5, z = -1.75} + self.driver_eye_offset = {x = 0, y = 10, z = 0} + self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y} + end + + -- if driver present allow control of horse + if self.driver then + + mobs.drive(self, "walk", "stand", false, dtime) + + return false -- skip rest of mob functions + end + + return true + end, + + on_die = function(self, pos) + + -- drop saddle when horse is killed while riding + -- also detach from horse properly + if self.driver then + mobs.detach(self.driver, {x = 1, y = 0, z = 1}) + end + end, + + on_rightclick = function(self, clicker) + if not clicker or not clicker:is_player() then + return + end + + local wielditem = clicker:get_wielded_item() + + local controlitem = "" + if minetest.get_modpath("mcl_mobitems") then + controlitem = "mcl_mobitems_warped_fungus_stick:warped_fungus_stick" + else + controlitem = mobs_mc.items.carrot_on_a_stick + end + if wielditem:get_name() ~= controlitem then + if mcl_mobs:feed_tame(self, clicker, 1, true, true) then return end + end + + if self.child then + return + end + + local item = clicker:get_wielded_item() + if item:get_name() == "mcl_mobitems:saddle" and self.saddle ~= "yes" then + self.base_texture = { + "extra_mobs_strider.png", + "mobs_mc_pig_saddle.png", -- saddle + } + self.object:set_properties({ + textures = self.base_texture + }) + self.saddle = "yes" + self.tamed = true + self.drops = { + {name = "mcl_mobitems:string", + chance = 1, + min = 1, + max = 3,}, + {name = "mcl_mobitems:saddle", + chance = 1, + min = 1, + max = 1,}, + } + if not minetest.is_creative_enabled(clicker:get_player_name()) then + local inv = clicker:get_inventory() + local stack = inv:get_stack("main", clicker:get_wield_index()) + stack:take_item() + inv:set_stack("main", clicker:get_wield_index(), stack) + end + minetest.sound_play({name = "mcl_armor_equip_leather"}, {gain=0.5, max_hear_distance=8, pos=self.object:get_pos()}, true) + return + end + + -- Mount or detach player + local name = clicker:get_player_name() + if self.driver and clicker == self.driver then + -- Detach if already attached + mobs.detach(clicker, {x=1, y=0, z=0}) + return + + elseif not self.driver and self.saddle == "yes" and wielditem:get_name() == controlitem then + -- Ride pig if it has a saddle and player uses a carrot on a stick + + mobs.attach(self, clicker) + + if not minetest.is_creative_enabled(clicker:get_player_name()) then + + local inv = self.driver:get_inventory() + -- 26 uses + if wielditem:get_wear() > 63000 then + -- Break carrot on a stick + local def = wielditem:get_definition() + if def.sounds and def.sounds.breaks then + minetest.sound_play(def.sounds.breaks, {pos = clicker:get_pos(), max_hear_distance = 8, gain = 0.5}, true) + end + wielditem = {name = mobs_mc.items.fishing_rod, count = 1} + else + wielditem:add_wear(2521) + end + inv:set_stack("main",self.driver:get_wield_index(), wielditem) + end + return + end + end, +} + +mcl_mobs:register_mob("mobs_mc:strider", strider) + +-- Baby strider. + +local baby_strider = table.copy(strider) +baby_strider.collisionbox = {-.3, -0.01, -.3, .3, 0.94, .3} +baby_strider.xp_min = 13 +baby_strider.xp_max = 13 +baby_strider.visual_size = {x=strider.visual_size.x/2, y=strider.visual_size.y/2} +textures = { { + "extra_mobs_strider.png", + "extra_mobs_trans.png", +} } +baby_strider.walk_velocity = 1.2 +baby_strider.run_velocity = 2.4 +baby_strider.child = 1 + +mcl_mobs:register_mob("mobs_mc:baby_strider", baby_strider) + +-- Regular spawning in the Nether + +mcl_mobs:spawn_setup({ + name = "mobs_mc:strider", + type_of_spawning = "lava", + dimension = "nether", + biomes = { + "Nether" + }, + min_height = mcl_vars.mg_nether_min, + max_height = mcl_vars.mg_nether_max, + chance = 2000, + check_position = function(pos) + return minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}).name:find("lava") + end +}) + +mcl_mobs:spawn_setup({ + name = "mobs_mc:baby_strider", + type_of_spawning = "lava", + dimension = "nether", + biomes = { + "Nether" + }, + min_height = mcl_vars.mg_nether_min, + max_height = mcl_vars.mg_nether_max, + chance = 100, + check_position = function(pos) + return minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}).name:find("lava") + end +}) + +-- spawn eggs +mcl_mobs:register_egg("mobs_mc:strider", S("Strider"), "#000000", "#FF0000", 0) diff --git a/mods/ENTITIES/mobs_mc/textures/extra_mobs_strider.png b/mods/ENTITIES/mobs_mc/textures/extra_mobs_strider.png new file mode 100644 index 0000000000000000000000000000000000000000..5039afe360a8ff2d631d6b9472c05e7da08c9956 GIT binary patch literal 2100 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 literal 0 HcmV?d00001