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 315237e07..61f1a11db 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 a0535fc7d..58ea838a6 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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 a?BN@WF&t~;TOQ@{yDclvsg7y&_5T7Vm#}{T 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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 JPDHLkV1mxjfII*I 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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 FV1g#Z7?%J5 literal 0 HcmV?d00001