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 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 G!~HuKWwh1+ 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