Improve code so that carts exactly follow the rails and can be controlled by speed limit signs
parent
73f7fd4304
commit
647419a317
2
api.lua
2
api.lua
|
@ -23,7 +23,7 @@ function minecart.is_cart_available(pos, param2, radius)
|
|||
end
|
||||
-- The entity check is needed for a cart with driver
|
||||
local entity = minecart.get_entitycart_nearby(pos, param2, radius)
|
||||
if entity and entity.driver then
|
||||
if entity then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
|
|
@ -328,8 +328,8 @@ function minecart.entity_to_node(pos, entity)
|
|||
local facedir = minetest.dir_to_facedir(dir)
|
||||
minecart.stop_recording(entity, pos)
|
||||
entity.object:remove()
|
||||
minecart.add_nodecart(pos, entity.node_name, facedir, entity.cargo, entity.owner, entity.userID)
|
||||
minecart.stop_monitoring(entity.owner, entity.userID, pos)
|
||||
local pos2 = minecart.add_nodecart(pos, entity.node_name, facedir, entity.cargo, entity.owner, entity.userID)
|
||||
minecart.stop_monitoring(entity.owner, entity.userID, pos2)
|
||||
end
|
||||
|
||||
function minecart.add_node_to_player_inventory(pos, player, node_name)
|
||||
|
|
|
@ -148,7 +148,7 @@ local function running(self)
|
|||
self.num_sections = (self.num_sections or 0) + 1
|
||||
|
||||
-- Got stuck somewhere
|
||||
if new_speed < 0.1 or dist < 0.2 then
|
||||
if new_speed < 0.1 or dist < 0 then
|
||||
print("Got stuck somewhere", new_speed, dist)
|
||||
stop_cart(self, wayp_pos)
|
||||
return
|
||||
|
|
2
init.lua
2
init.lua
|
@ -36,7 +36,7 @@ dofile(MP .. "/api.lua")
|
|||
dofile(MP .. "/minecart.lua")
|
||||
dofile(MP .. "/buffer.lua")
|
||||
dofile(MP .. "/protection.lua")
|
||||
dofile(MP .. "/tool.lua")
|
||||
--dofile(MP .. "/tool.lua")
|
||||
dofile(MP .. "/signs.lua")
|
||||
dofile(MP .. "/terminal.lua")
|
||||
|
||||
|
|
|
@ -46,6 +46,6 @@ Travel time=Fahrzeit
|
|||
Speed "1"=Tempo "1"
|
||||
Speed "2"=Tempo "2"
|
||||
Speed "4"=Tempo "4"
|
||||
Speed "8"=Tempo "8"
|
||||
No speed limit=Keine Geschwindigkeitsbegrenzung
|
||||
Cart List=Cart Liste
|
||||
Cart Terminal=Cart Terminal
|
||||
|
|
|
@ -30,6 +30,7 @@ function minecart.start_nodecart(pos, node_name, puncher)
|
|||
local userID = M(pos):get_int("userID")
|
||||
-- check if valid cart
|
||||
if not minecart.monitoring_valid_cart(owner, userID, pos, node_name) then
|
||||
print("invalid cart", owner, userID, pos, node_name)
|
||||
M(pos):set_string("infotext",
|
||||
minetest.get_color_escape_sequence("#FFFF00") .. owner .. ": 0")
|
||||
return
|
||||
|
@ -102,6 +103,7 @@ function minecart.on_nodecart_punch(pos, node, puncher, pointed_thing)
|
|||
local ndef = minetest.registered_nodes[node.name]
|
||||
if not ndef.has_cargo or not ndef.has_cargo(pos) then
|
||||
minecart.remove_nodecart(pos)
|
||||
minecart.add_node_to_player_inventory(pos, puncher, node.name)
|
||||
minecart.monitoring_remove_cart(owner, userID)
|
||||
end
|
||||
else
|
||||
|
|
|
@ -439,8 +439,8 @@ carts:register_rail("minecart:rail", {
|
|||
carts:register_rail("minecart:powerrail", {
|
||||
description = "Powered Rail",
|
||||
tiles = {
|
||||
"carts_rail_straight.png^minecart_waypoint.png", "carts_rail_curved.png^minecart_waypoint.png",
|
||||
"carts_rail_t_junction.png^minecart_waypoint.png", "carts_rail_crossing.png^minecart_waypoint.png"
|
||||
"carts_rail_straight_pwr.png^minecart_waypoint.png", "carts_rail_curved_pwr.png^minecart_waypoint.png",
|
||||
"carts_rail_t_junction_pwr.png^minecart_waypoint.png", "carts_rail_crossing_pwr.png^minecart_waypoint.png"
|
||||
},
|
||||
inventory_image = "carts_rail_straight.png",
|
||||
wield_image = "carts_rail_straight.png",
|
||||
|
|
Loading…
Reference in New Issue