lava boats
-
- Member
- Posts: 45
- Joined: Wed Apr 24, 2013 16:23
lava boats
Hello All. I am currently using PilzAdam's boat mod (viewtopic.php?id=4016).
It works great but i have a problem. i want to use the boat on lava not just water. not only will it not let me place it on lava but i think it would probably just burn up if i place it there. is there a way to make it so i can boat in lava and water.
Thanks
It works great but i have a problem. i want to use the boat on lava not just water. not only will it not let me place it on lava but i think it would probably just burn up if i place it there. is there a way to make it so i can boat in lava and water.
Thanks
-
- Member
- Posts: 45
- Joined: Wed Apr 24, 2013 16:23
-
- Member
- Posts: 45
- Joined: Wed Apr 24, 2013 16:23
if you rode in a boat over lava, even metal kind like steel or bronze the broat would get warm and ur butt would be hot right?ak399g wrote:I don't think a wooden boat would actually float on lava. Perhaps, however, a steel or bronze boat could be added to the mod?
Last edited by nolan on Mon Aug 05, 2013 21:50, edited 1 time in total.
Minecraft Came Out For The Ps3
-
- Member
- Posts: 4534
- Joined: Mon Oct 03, 2011 17:58
- GitHub: Jordach
- IRC: Jordach
- In-game: Jordach
- Location: Blender Scene
I already thought of that: some sort of water cooling might work. Dunno really.nolan wrote:if you rode in a boat over lava, even metal kind like steel or bronze the broat would get warm and ur butt would be hot right?ak399g wrote:I don't think a wooden boat would actually float on lava. Perhaps, however, a steel or bronze boat could be added to the mod?
-
- Member
- Posts: 570
- Joined: Fri Feb 17, 2012 21:55
- Location: Canada
Oh, lawd. Easy-peasy:
1. Open /boats/init.lua in Wordpad
2. Remove {flammable=1}
3. ???
4. Profit!
---
That said, if you want an Obisidian boat, just copy the code, change the recipe, and then use GIMP on the texture. :-)
1. Open /boats/init.lua in Wordpad
2. Remove {flammable=1}
3. ???
4. Profit!
---
That said, if you want an Obisidian boat, just copy the code, change the recipe, and then use GIMP on the texture. :-)
We are what we create.
I tinker and occasionally make (lousy) mods. Currently building an MMO subgame and updating mods. Pirate Party of Canada member. Sporadic author. 21 years old.
My github:
https://github.com/tinoesroho/
I tinker and occasionally make (lousy) mods. Currently building an MMO subgame and updating mods. Pirate Party of Canada member. Sporadic author. 21 years old.
My github:
https://github.com/tinoesroho/
-
- Member
- Posts: 45
- Joined: Wed Apr 24, 2013 16:23
Its not just that they catch on fire but that it wont let me place them on lavatinoesroho wrote:Oh, lawd. Easy-peasy:
1. Open /boats/init.lua in Wordpad
2. Remove {flammable=1}
3. ???
4. Profit!
---
That said, if you want an Obisidian boat, just copy the code, change the recipe, and then use GIMP on the texture. :-)
- Excalibur Zero
- Member
- Posts: 142
- Joined: Tue Apr 02, 2013 19:45
- GitHub: ExcaliburZero
- Location: United States
- Contact:
I don't know for sure how to modify the mod to get it to work in lava. But from my understanding it would be by doing something like this.
Modify the "init.lua" file at this section (at the beginning):
It would be modified to something like this:
That way it would be able to be placed on lava instead of water. Well, that what I think it would do, since I haven't tried it out and I don't know the code that well.
------------------
Edit:
I tried modifying the code, and I got it so there is a second boat which can go on lava instead of water. It has the texture of Obsidian, but the icon for it is still wood (since this is just a modification of the code).
Just replace all of the text in "init.lua" with this:
The crafting recipe for the Lava Boat is the same as the regular boat, but it has an Obsidian node in the middle.
Modify the "init.lua" file at this section (at the beginning):
Code: Select all
local function is_water(pos)
local nn = minetest.env:get_node(pos).name
return minetest.get_item_group(nn, "water") ~= 0 <------THIS LINE
end
Code: Select all
local function is_water(pos)
local nn = minetest.env:get_node(pos).name
return minetest.get_item_group(nn, "lava") ~= 0
end
------------------
Edit:
I tried modifying the code, and I got it so there is a second boat which can go on lava instead of water. It has the texture of Obsidian, but the icon for it is still wood (since this is just a modification of the code).
Just replace all of the text in "init.lua" with this:
Code: Select all
--
-- Helper functions
--
local function is_water(pos)
local nn = minetest.env: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.cos(yaw)*v
local z = math.sin(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
--
-- Cart entity
--
local boat = {
physical = true,
collisionbox = {-0.6,-0.4,-0.6, 0.6,0.3,0.6},
visual = "mesh",
mesh = "boat.x",
textures = {"default_wood.png"},
driver = nil,
v = 0,
}
function boat:on_rightclick(clicker)
if not clicker or not clicker:is_player() then
return
end
if self.driver and clicker == self.driver then
self.driver = nil
clicker:set_detach()
elseif not self.driver then
self.driver = clicker
clicker:set_attach(self.object, "", {x=0,y=5,z=0}, {x=0,y=0,z=0})
self.object:setyaw(clicker:get_look_yaw())
end
end
function boat:on_activate(staticdata, dtime_s)
self.object:set_armor_groups({immortal=1})
if staticdata then
self.v = tonumber(staticdata)
end
end
function boat:get_staticdata()
return tostring(v)
end
function boat:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
self.object:remove()
if puncher and puncher:is_player() then
puncher:get_inventory():add_item("main", "boats:boat")
end
end
function boat:on_step(dtime)
self.v = get_v(self.object:getvelocity())*get_sign(self.v)
if self.driver then
local ctrl = self.driver:get_player_control()
if ctrl.up then
self.v = self.v+0.1
end
if ctrl.down then
self.v = self.v-0.08
end
if ctrl.left then
self.object:setyaw(self.object:getyaw()+math.pi/120+dtime*math.pi/120)
end
if ctrl.right then
self.object:setyaw(self.object:getyaw()-math.pi/120-dtime*math.pi/120)
end
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) > 4.5 then
self.v = 4.5*get_sign(self.v)
end
local p = self.object:getpos()
p.y = p.y-0.5
if not is_water(p) then
if minetest.registered_nodes[minetest.env:get_node(p).name].walkable then
self.v = 0
end
self.object:setacceleration({x=0, y=-10, z=0})
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y))
else
p.y = p.y+1
if is_water(p) then
self.object:setacceleration({x=0, y=3, z=0})
local y = self.object:getvelocity().y
if y > 2 then
y = 2
end
if y < 0 then
self.object:setacceleration({x=0, y=10, z=0})
end
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), y))
else
self.object:setacceleration({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)
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0))
else
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y))
end
end
end
end
minetest.register_entity("boats:boat", boat)
minetest.register_craftitem("boats:boat", {
description = "Boat",
inventory_image = "boat_inventory.png",
wield_image = "boat_wield.png",
wield_scale = {x=2, y=2, z=1},
liquids_pointable = true,
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then
return
end
if not is_water(pointed_thing.under) then
return
end
pointed_thing.under.y = pointed_thing.under.y+0.5
minetest.env:add_entity(pointed_thing.under, "boats:boat")
itemstack:take_item()
return itemstack
end,
})
minetest.register_craft({
output = "boats:boat",
recipe = {
{"", "", ""},
{"group:wood", "", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
},
})
--
-- Helper functions
--
local function is_lava(pos)
local nn = minetest.env:get_node(pos).name
return minetest.get_item_group(nn, "lava") ~= 0
end
--
-- Cart entity
--
local lavaboat = {
physical = true,
collisionbox = {-0.6,-0.4,-0.6, 0.6,0.3,0.6},
visual = "mesh",
mesh = "boat.x",
textures = {"default_obsidian.png"},
driver = nil,
v = 0,
}
function lavaboat:on_rightclick(clicker)
if not clicker or not clicker:is_player() then
return
end
if self.driver and clicker == self.driver then
self.driver = nil
clicker:set_detach()
elseif not self.driver then
self.driver = clicker
clicker:set_attach(self.object, "", {x=0,y=5,z=0}, {x=0,y=0,z=0})
self.object:setyaw(clicker:get_look_yaw())
end
end
function lavaboat:on_activate(staticdata, dtime_s)
self.object:set_armor_groups({immortal=1})
if staticdata then
self.v = tonumber(staticdata)
end
end
function lavaboat:get_staticdata()
return tostring(v)
end
function lavaboat:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
self.object:remove()
if puncher and puncher:is_player() then
puncher:get_inventory():add_item("main", "boats:lavaboat")
end
end
function lavaboat:on_step(dtime)
self.v = get_v(self.object:getvelocity())*get_sign(self.v)
if self.driver then
local ctrl = self.driver:get_player_control()
if ctrl.up then
self.v = self.v+0.1
end
if ctrl.down then
self.v = self.v-0.08
end
if ctrl.left then
self.object:setyaw(self.object:getyaw()+math.pi/120+dtime*math.pi/120)
end
if ctrl.right then
self.object:setyaw(self.object:getyaw()-math.pi/120-dtime*math.pi/120)
end
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) > 4.5 then
self.v = 4.5*get_sign(self.v)
end
local p = self.object:getpos()
p.y = p.y-0.5
if not is_lava(p) then
if minetest.registered_nodes[minetest.env:get_node(p).name].walkable then
self.v = 0
end
self.object:setacceleration({x=0, y=-10, z=0})
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y))
else
p.y = p.y+1
if is_lava(p) then
self.object:setacceleration({x=0, y=3, z=0})
local y = self.object:getvelocity().y
if y > 2 then
y = 2
end
if y < 0 then
self.object:setacceleration({x=0, y=10, z=0})
end
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), y))
else
self.object:setacceleration({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)
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), 0))
else
self.object:setvelocity(get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y))
end
end
end
end
minetest.register_entity("boats:lavaboat", lavaboat)
minetest.register_craftitem("boats:lavaboat", {
description = "Lava Boat",
inventory_image = "boat_inventory.png",
wield_image = "boat_wield.png",
wield_scale = {x=2, y=2, z=1},
liquids_pointable = true,
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then
return
end
if not is_lava(pointed_thing.under) then
return
end
pointed_thing.under.y = pointed_thing.under.y+0.5
minetest.env:add_entity(pointed_thing.under, "boats:lavaboat")
itemstack:take_item()
return itemstack
end,
})
minetest.register_craft({
output = "boats:lavaboat",
recipe = {
{"", "", ""},
{"group:wood", "default:obsidian", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
},
})
Last edited by Excalibur Zero on Thu Aug 08, 2013 15:37, edited 1 time in total.
Who is online
Users browsing this forum: No registered users and 1 guest