From 2d4833b5a8d3555c257cbeb5928c32eb36caa473 Mon Sep 17 00:00:00 2001
From: orwell96 <orwell@bleipb.de>
Date: Wed, 22 Nov 2017 22:16:08 +0100
Subject: do not register wagons in the advtrains namespace automatically One
 step towards advcarts compatibility

---
 advtrains/api_doc.txt |  5 ++++-
 advtrains/wagons.lua  | 12 ++++++++----
 2 files changed, 12 insertions(+), 5 deletions(-)

(limited to 'advtrains')

diff --git a/advtrains/api_doc.txt b/advtrains/api_doc.txt
index 20f285f..b02ff83 100644
--- a/advtrains/api_doc.txt
+++ b/advtrains/api_doc.txt
@@ -6,8 +6,11 @@ All boolean values in definition tables default to 'false' and can be omitted.
 Wagons are registered using the function
 
 advtrains.register_wagon(name, prototype, description, inventory_image)
-- 'name' is the internal name of the wagon. It is registered inside the 'advtrains:' namespace.
+- 'name' is the internal name of the wagon. It should follow the mod naming convention, however, this is not enforced.
+	For compatibility reasons, if a mod name is omitted, the wagon will be registered in the advtrains: namespace.
 	Example: A wagon with name="engine_tgv" will be registered as "advtrains:engine_tgv".
+	!IMPORTANT! You must not append a ":" at the start of the name, even if you want to bypass the mod naming convention check. This is because internally the register_wagon function
+	appends a ":" automatically.
 - 'prototype' is the lua entity prototype. The regular definition keys for luaentites apply. Additional required and optional properties see below. DO NOT define 'on_step', 'on_activate', 'on_punch', 'on_rightclick' and 'get_staticdata' since these will be overridden. Use 'custom_*' instead.
 - 'description' is the description of the inventory item that is used to place the wagon.
 - 'inventory_image' is the inventory image of said item.
diff --git a/advtrains/wagons.lua b/advtrains/wagons.lua
index 3e8641e..efebba8 100644
--- a/advtrains/wagons.lua
+++ b/advtrains/wagons.lua
@@ -857,11 +857,15 @@ function wagon:reattach_all()
 	end
 end
 
-function advtrains.register_wagon(sysname, prototype, desc, inv_img)
+function advtrains.register_wagon(sysname_p, prototype, desc, inv_img)
+	local sysname = sysname_p
+	if not string.match(sysname, ":") then
+		sysname = "advtrains:"..sysname_p
+	end
 	setmetatable(prototype, {__index=wagon})
-	minetest.register_entity(":advtrains:"..sysname,prototype)
+	minetest.register_entity(":"..sysname,prototype)
 	
-	minetest.register_craftitem(":advtrains:"..sysname, {
+	minetest.register_craftitem(":"..sysname, {
 		description = desc,
 		inventory_image = inv_img,
 		wield_image = inv_img,
@@ -888,7 +892,7 @@ function advtrains.register_wagon(sysname, prototype, desc, inv_img)
 				local conn1=advtrains.get_track_connections(node.name, node.param2)
 				local id=advtrains.create_new_train_at(pointed_thing.under, advtrains.dirCoordSet(pointed_thing.under, conn1))
 				
-				local ob=minetest.add_entity(pointed_thing.under, "advtrains:"..sysname)
+				local ob=minetest.add_entity(pointed_thing.under, sysname)
 				if not ob then
 					atprint("couldn't add_entity, aborting")
 				end
-- 
cgit v1.2.3