From df3062f86f983bb98f712084a5bc8a3f8196945e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 12 Jun 2017 23:21:41 +0200 Subject: [PATCH] Import boat code from Grieftest --- mods/ITEMS/mcl_boats/depends.txt | 1 + mods/ITEMS/mcl_boats/init.lua | 303 ++++++++++++++++++++++-- mods/ITEMS/mcl_boats/models/boat.b3d | Bin 0 -> 19225 bytes mods/ITEMS/mcl_boats/textures/boat.png | Bin 0 -> 3748 bytes mods/ITEMS/mcl_boats/textures/boat2.png | Bin 0 -> 3497 bytes mods/ITEMS/mcl_boats/textures/boat3.png | Bin 0 -> 2798 bytes mods/ITEMS/mcl_boats/textures/boat4.png | Bin 0 -> 3327 bytes mods/ITEMS/mcl_boats/textures/boat5.png | Bin 0 -> 3348 bytes mods/ITEMS/mcl_boats/textures/boat6.png | Bin 0 -> 3115 bytes 9 files changed, 282 insertions(+), 22 deletions(-) create mode 100644 mods/ITEMS/mcl_boats/models/boat.b3d create mode 100644 mods/ITEMS/mcl_boats/textures/boat.png create mode 100644 mods/ITEMS/mcl_boats/textures/boat2.png create mode 100644 mods/ITEMS/mcl_boats/textures/boat3.png create mode 100644 mods/ITEMS/mcl_boats/textures/boat4.png create mode 100644 mods/ITEMS/mcl_boats/textures/boat5.png create mode 100644 mods/ITEMS/mcl_boats/textures/boat6.png diff --git a/mods/ITEMS/mcl_boats/depends.txt b/mods/ITEMS/mcl_boats/depends.txt index 315237e0..61f1a11d 100644 --- a/mods/ITEMS/mcl_boats/depends.txt +++ b/mods/ITEMS/mcl_boats/depends.txt @@ -1 +1,2 @@ mcl_core +mcl_player diff --git a/mods/ITEMS/mcl_boats/init.lua b/mods/ITEMS/mcl_boats/init.lua index a0535fc7..58ea838a 100644 --- a/mods/ITEMS/mcl_boats/init.lua +++ b/mods/ITEMS/mcl_boats/init.lua @@ -1,6 +1,266 @@ -- -- Helper functions -- + +local function is_water(pos) + local nn = minetest.get_node(pos).name + return minetest.get_item_group(nn, "water") ~= 0 +end + + +local function get_sign(i) + if i == 0 then + return 0 + else + return i / math.abs(i) + end +end + + +local function get_velocity(v, yaw, y) + local x = -math.sin(yaw) * v + local z = math.cos(yaw) * v + return {x = x, y = y, z = z} +end + + +local function get_v(v) + return math.sqrt(v.x ^ 2 + v.z ^ 2) +end + +-- +-- Boat entity +-- + +local boat = { + physical = true, + -- Warning: Do not change the position of the collisionbox top surface, + -- lowering it causes the boat to fall through the world if underwater + collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5}, + visual = "mesh", + mesh = "boat.b3d", + textures = {"boat.png"}, + visual_size = {x=3, y=3}, + rotate = -180, + animation = { + speed_normal = 25, speed_run = 50, + stand_start = 0, stand_end = 0, + walk_start = 0, walk_end = 40, + run_start = 0, run_end = 40, + }, + driver = nil, + v = 0, + last_v = 0, + removed = false +} + +--[[ +--################### +--################### BOAT +--################### + +mobs:register_mob("amc:81boat", { + type = "animal", + passive = true, + runaway = true, + stepheight = 1.2, + hp_min = 30, + hp_max = 60, + armor = 150, + collisionbox = {-0.35, -0.01, -0.35, 0.35, 2, 0.35}, + rotate = -180, + visual = "mesh", + mesh = "boat.b3d", + textures = {{"boat.png"},{"boat1.png"},{"boat2.png"},{"boat3.png"},{"boat4.png"},{"boat5.png"},{"boat6.png"},}, + visual_size = {x=3, y=3}, + walk_velocity = 0.6, + run_velocity = 2, + jump = true, + animation = { + speed_normal = 25, speed_run = 50, + stand_start = 0, stand_end = 0, + walk_start = 0, walk_end = 40, + run_start = 0, run_end = 40, + }, +}) +]] +function boat.on_rightclick(self, clicker) + if not clicker or not clicker:is_player() then + return + end + local name = clicker:get_player_name() + if self.driver and clicker == self.driver then + self.driver = nil + clicker:set_detach() + mcl_player.player_attached[name] = false + mcl_player.player_set_animation(clicker, "stand" , 30) + local pos = clicker:getpos() + pos = {x = pos.x, y = pos.y + 0.2, z = pos.z} + minetest.after(0.1, function() + clicker:setpos(pos) + end) + elseif not self.driver then + local attach = clicker:get_attach() + if attach and attach:get_luaentity() then + local luaentity = attach:get_luaentity() + if luaentity.driver then + luaentity.driver = nil + end + clicker:set_detach() + end + self.driver = clicker + clicker:set_attach(self.object, "", + {x = 0, y = 11, z = -3}, {x = 0, y = 0, z = 0}) + mcl_player.player_attached[name] = true + minetest.after(0.2, function(clicker) + if clicker:is_player() then + mcl_player.player_set_animation(clicker, "sit" , 30) + end + end, clicker) + clicker:set_look_horizontal(self.object:getyaw()) + end +end + + +function boat.on_activate(self, staticdata, dtime_s) + self.object:set_armor_groups({immortal = 1}) + if staticdata then + self.v = tonumber(staticdata) + end + self.last_v = self.v +end + + +function boat.get_staticdata(self) + return tostring(self.v) +end + + +function boat.on_punch(self, puncher) + if not puncher or not puncher:is_player() or self.removed then + return + end + if self.driver and puncher == self.driver then + self.driver = nil + puncher:set_detach() + mcl_player.player_attached[puncher:get_player_name()] = false + end + if not self.driver then + self.removed = true + local inv = puncher:get_inventory() + if not (creative and creative.is_enabled_for + and creative.is_enabled_for(puncher:get_player_name())) + or not inv:contains_item("main", "mcl_boats:boat") then + local leftover = inv:add_item("main", "mcl_boats:boat") + -- if no room in inventory add a replacement boat to the world + if not leftover:is_empty() then + minetest.add_item(self.object:getpos(), leftover) + end + end + -- delay remove to ensure player is detached + minetest.after(0.1, function() + self.object:remove() + end) + end +end + + +function boat.on_step(self, dtime) + self.v = get_v(self.object:getvelocity()) * get_sign(self.v) + if self.driver then + local ctrl = self.driver:get_player_control() + local yaw = self.object:getyaw() + if ctrl.up then + self.v = self.v + 0.1 + elseif ctrl.down then + self.v = self.v - 0.1 + end + if ctrl.left then + if self.v < 0 then + self.object:setyaw(yaw - (1 + dtime) * 0.03) + else + self.object:setyaw(yaw + (1 + dtime) * 0.03) + end + elseif ctrl.right then + if self.v < 0 then + self.object:setyaw(yaw + (1 + dtime) * 0.03) + else + self.object:setyaw(yaw - (1 + dtime) * 0.03) + end + end + end + local velo = self.object:getvelocity() + if self.v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then + self.object:setpos(self.object:getpos()) + return + end + local s = get_sign(self.v) + self.v = self.v - 0.02 * s + if s ~= get_sign(self.v) then + self.object:setvelocity({x = 0, y = 0, z = 0}) + self.v = 0 + return + end + if math.abs(self.v) > 5 then + self.v = 5 * get_sign(self.v) + end + + local p = self.object:getpos() + p.y = p.y - 0.5 + local new_velo + local new_acce = {x = 0, y = 0, z = 0} + if not is_water(p) then + local nodedef = minetest.registered_nodes[minetest.get_node(p).name] + if (not nodedef) or nodedef.walkable then + self.v = 0 + new_acce = {x = 0, y = 1, z = 0} + else + new_acce = {x = 0, y = -9.8, z = 0} + end + new_velo = get_velocity(self.v, self.object:getyaw(), + self.object:getvelocity().y) + self.object:setpos(self.object:getpos()) + else + p.y = p.y + 1 + if is_water(p) then + local y = self.object:getvelocity().y + if y >= 5 then + y = 5 + elseif y < 0 then + new_acce = {x = 0, y = 20, z = 0} + else + new_acce = {x = 0, y = 5, z = 0} + end + new_velo = get_velocity(self.v, self.object:getyaw(), y) + self.object:setpos(self.object:getpos()) + else + new_acce = {x = 0, y = 0, z = 0} + if math.abs(self.object:getvelocity().y) < 1 then + local pos = self.object:getpos() + pos.y = math.floor(pos.y) + 0.5 + self.object:setpos(pos) + new_velo = get_velocity(self.v, self.object:getyaw(), 0) + else + new_velo = get_velocity(self.v, self.object:getyaw(), + self.object:getvelocity().y) + self.object:setpos(self.object:getpos()) + end + end + end + self.object:setvelocity(new_velo) + self.object:setacceleration(new_acce) +end + + + + + + +--mc2code +--[[ +-- +-- Helper functions +-- local init = os.clock() local function is_water(pos) @@ -19,10 +279,13 @@ end -- local boat = { physical = true, - collisionbox = {-1,-0.5,-1, 1,0.5,1}, + --collisionbox = {-1,-0.5,-1, 1,0.5,1}, + collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5}, visual = "mesh", - mesh = "mcl_boats_base.x", - + --mesh = "mcl_boats_base.x", + mesh = "boats_boat.obj", + --textures = {"mcl_boats_texture.png"}, + textures = {"default_wood.png"}, _driver = nil, _v = 0, _stepcount = 0, @@ -87,7 +350,7 @@ function boat.on_step(self, dtime) local yaw = self.object:getyaw() - if ctrl.up and self._v<3 then + if ctrl.up and self._v<6 then --was3 self._v = self._v + 1 end @@ -132,21 +395,19 @@ function boat.on_step(self, dtime) end end +]] +local boat_ids = { "boat", "boat_spruce", "boat_birch", "boat_jungle", "boat_acacia", "boat_dark_oak" } +local names = { "Oak Boat", "Spruce Boat", "Birch Boat", "Jungle Boat", "Acacia Boat", "Dark Oak Boat" } +local craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_core:darkwood" } +local images = { "oak", "spruce", "birch", "jungle", "acacia", "dark_oak" } -local woods = { "", "_spruce", "_birch", "_jungle", "_dark", "_acacia" } -local names = { "Oak Boat", "Spruce Boat", "Birch Boat", "Jungle Boat", "Dark Oak Boat", "Acacia Boat" } -local craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:darkwood", "mcl_core:acaciawood" } -local images = { "oak", "spruce", "birch", "jungle", "dark_oak", "acacia" } +for b=1, #boat_ids do + local itemstring = "mcl_boats:"..boat_ids[b] + minetest.register_entity(itemstring, boat) -for w=1, #woods do - local textures = {"mcl_boats_texture.png"} - minetest.register_entity("mcl_boats:boat"..woods[w], boat) - - minetest.register_craftitem("mcl_boats:boat"..woods[w], { - description = names[w], - _doc_items_longdesc = "Boats are used to travel on the surface of water.", - _doc_items_usagehelp = "Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to collect it.", - inventory_image = "mcl_boats_"..images[w].."_boat.png", + minetest.register_craftitem(itemstring, { + description = names[b], + inventory_image = "mcl_boats_"..images[b].."_boat.png", liquids_pointable = true, groups = { boat = 1, transport = 1}, stack_max = 1, @@ -167,7 +428,7 @@ for w=1, #woods do return end pointed_thing.under.y = pointed_thing.under.y+0.5 - minetest.add_entity(pointed_thing.under, "mcl_boats:boat"..woods[w]) + minetest.add_entity(pointed_thing.under, itemstring) if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end @@ -175,9 +436,9 @@ for w=1, #woods do end, }) - local c = craftstuffs[w] + local c = craftstuffs[b] minetest.register_craft({ - output = "mcl_boats:boat"..woods[w], + output = itemstring, recipe = { {c, "", c}, {c, c, c}, @@ -191,5 +452,3 @@ minetest.register_craft({ burntime = 20, }) -local time_to_load= os.clock() - init -print(string.format("[MOD] "..minetest.get_current_modname().." loaded in %.4f s", time_to_load)) diff --git a/mods/ITEMS/mcl_boats/models/boat.b3d b/mods/ITEMS/mcl_boats/models/boat.b3d new file mode 100644 index 0000000000000000000000000000000000000000..6a8cb3b9630dc427ee3f2126b26cbc90359365bd GIT binary patch literal 19225 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_boats/textures/boat.png b/mods/ITEMS/mcl_boats/textures/boat.png new file mode 100644 index 0000000000000000000000000000000000000000..4e0436fe2c210b1107c1f0c860f9cde7545fa333 GIT binary patch literal 3748 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_boats/textures/boat2.png b/mods/ITEMS/mcl_boats/textures/boat2.png new file mode 100644 index 0000000000000000000000000000000000000000..1907f4be64d5eb95e0697b15882df24a46c65c7e GIT binary patch literal 3497 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_boats/textures/boat5.png b/mods/ITEMS/mcl_boats/textures/boat5.png new file mode 100644 index 0000000000000000000000000000000000000000..d02a9a9cf01b6ab7e432ee2518dd3f3702315a3c GIT binary patch literal 3348 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_boats/textures/boat6.png b/mods/ITEMS/mcl_boats/textures/boat6.png new file mode 100644 index 0000000000000000000000000000000000000000..74ba9efb54edb2ee5ce57b36dd5bac820113bf31 GIT binary patch literal 3115 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 literal 0 HcmV?d00001