From d0a1798b0bdbe71f33f0bacafa9286005e9de4b1 Mon Sep 17 00:00:00 2001
From: Hugo Locurcio <hugo.locurcio@hugo.pro>
Date: Wed, 22 May 2019 11:30:48 +0200
Subject: [PATCH] Use `carts` mod functions to register copper rails

This makes them behave similarly to default rails.
---
 CHANGELOG.md |  3 +++
 init.lua     | 51 +++++++++++++--------------------------------------
 mod.conf     |  2 +-
 3 files changed, 17 insertions(+), 39 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1363aba..e07b99e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
 ### Changed
 
 - The minimum supported Minetest version is now 5.0.0.
+- Copper rails are now registered using functions from the `carts` mod,
+  making them interoperate seamlessly with default rails.
+  - Copper rails can no longer be placed in the air.
 
 ## [1.1.0] - 2019-03-23
 
diff --git a/init.lua b/init.lua
index d3b1cc0..839c370 100644
--- a/init.lua
+++ b/init.lua
@@ -329,45 +329,20 @@ else
 end
 
 -- Copper rail (unique node)
-minetest.register_node("moreores:copper_rail", {
-	description = S("Copper Rail"),
-	drawtype = "raillike",
-	tiles = {
-		"moreores_copper_rail.png",
-		"moreores_copper_rail_curved.png",
-		"moreores_copper_rail_t_junction.png",
-		"moreores_copper_rail_crossing.png",
-	},
-	inventory_image = "moreores_copper_rail.png",
-	wield_image = "moreores_copper_rail.png",
-	paramtype = "light",
-	sunlight_propagates = true,
-	walkable = false,
-	selection_box = {
-		type = "fixed",
-		fixed = {
-			-1/2,
-			-1/2,
-			-1/2,
-			1/2,
-			-1/2 + 1/16,
-			1/2,
-		},
-	},
-	sounds = default_metal_sounds,
-	groups = {bendy = 2, snappy = 1, dig_immediate = 2, rail = 1, connect_to_raillike = 1},
-	mesecons = {
-		effector = {
-			action_on = function(pos, node)
-				minetest.get_meta(pos):set_string("cart_acceleration", "0.5")
-			end,
-
-			action_off = function(pos, node)
-				minetest.get_meta(pos):set_string("cart_acceleration", "0")
-			end,
+if minetest.get_modpath("carts") then
+	carts:register_rail("moreores:copper_rail", {
+		description = S("Copper Rail"),
+		tiles = {
+			"moreores_copper_rail.png",
+			"moreores_copper_rail_curved.png",
+			"moreores_copper_rail_t_junction.png",
+			"moreores_copper_rail_crossing.png",
 		},
-	},
-})
+		inventory_image = "moreores_copper_rail.png",
+		wield_image = "moreores_copper_rail.png",
+		groups = carts:get_rail_groups(),
+	}, {})
+end
 
 minetest.register_craft({
 	output = "moreores:copper_rail 24",
diff --git a/mod.conf b/mod.conf
index 2b96161..04a353a 100644
--- a/mod.conf
+++ b/mod.conf
@@ -1,4 +1,4 @@
 name = moreores
 description = Adds new ore types.
 depends = default
-optional_depends = farming,intllib,mg
+optional_depends = carts,farming,intllib,mg
-- 
GitLab