From 647419a317592856498eb00e885ea5a6dfb622d0 Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Sun, 25 Apr 2021 17:54:08 +0200 Subject: [PATCH] Improve code so that carts exactly follow the rails and can be controlled by speed limit signs --- api.lua | 2 +- baselib.lua | 4 ++-- entitylib.lua | 2 +- init.lua | 2 +- locale/minecart.de.tr | 2 +- nodelib.lua | 2 ++ rails.lua | 4 ++-- signs.lua | 2 +- 8 files changed, 11 insertions(+), 9 deletions(-) diff --git a/api.lua b/api.lua index d8a481e..e3c431e 100644 --- a/api.lua +++ b/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 diff --git a/baselib.lua b/baselib.lua index 8f5f755..d0c035a 100644 --- a/baselib.lua +++ b/baselib.lua @@ -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) diff --git a/entitylib.lua b/entitylib.lua index 154dc42..0b455f7 100644 --- a/entitylib.lua +++ b/entitylib.lua @@ -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 diff --git a/init.lua b/init.lua index a024ba1..cad14c1 100644 --- a/init.lua +++ b/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") diff --git a/locale/minecart.de.tr b/locale/minecart.de.tr index 8858751..97739c8 100644 --- a/locale/minecart.de.tr +++ b/locale/minecart.de.tr @@ -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 diff --git a/nodelib.lua b/nodelib.lua index 751709d..13285f1 100644 --- a/nodelib.lua +++ b/nodelib.lua @@ -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 diff --git a/rails.lua b/rails.lua index 047c888..0cbaab2 100644 --- a/rails.lua +++ b/rails.lua @@ -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", diff --git a/signs.lua b/signs.lua index 6836637..266e161 100644 --- a/signs.lua +++ b/signs.lua @@ -68,7 +68,7 @@ register_sign({ register_sign({ name = "speed8", - description = S('Speed "8"'), + description = S('No speed limit'), image = "minecart_sign8.png", })