summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--boost_cart/cart_entity.lua8
-rw-r--r--pipeworks/autocrafter.lua5
-rw-r--r--technic/depends.txt2
-rw-r--r--technic/machines/switching_station.lua59
-rw-r--r--technic_worldgen/oregen.lua6
5 files changed, 67 insertions, 13 deletions
diff --git a/boost_cart/cart_entity.lua b/boost_cart/cart_entity.lua
index 07a7d69..1633758 100644
--- a/boost_cart/cart_entity.lua
+++ b/boost_cart/cart_entity.lua
@@ -264,8 +264,12 @@ function cart_entity:on_step(dtime)
end
end
- -- Slow down or speed up, depending on Y direction
- acc = acc + dir.y * -2
+ if acc then
+ -- Slow down or speed up, depending on Y direction
+ acc = acc + dir.y * -2
+ else
+ acc = 0
+ end
if self.old_dir.y ~= 1 and not self.punched then
-- Stop the cart swing between two rail parts (handbrake)
diff --git a/pipeworks/autocrafter.lua b/pipeworks/autocrafter.lua
index 738f3f2..f120953 100644
--- a/pipeworks/autocrafter.lua
+++ b/pipeworks/autocrafter.lua
@@ -186,10 +186,9 @@ local function update_meta(meta, enabled)
"list[current_player;main;0,8;8,4;]" ..
"listring[current_player;main]"..
"listring[context;src]" ..
- "listring[context;dst]" ..
"listring[current_player;main]"..
- "listring[context;recipe]" ..
- "listring[context;output]"
+ "listring[context;dst]" ..
+ "listring[current_player;main]"
if minetest.get_modpath("digilines") then
fs = fs.."field[1,3.5;4,1;channel;Channel;${channel}]"
fs = fs.."button_exit[5,3.2;2,1;save;Save]"
diff --git a/technic/depends.txt b/technic/depends.txt
index 746fe34..777e94f 100644
--- a/technic/depends.txt
+++ b/technic/depends.txt
@@ -2,7 +2,9 @@ default
pipeworks
technic_worldgen
bucket?
+mesecons?
mesecons_mvps?
+digilines?
intllib?
unified_inventory?
vector_extras?
diff --git a/technic/machines/switching_station.lua b/technic/machines/switching_station.lua
index 8ace874..dcf6849 100644
--- a/technic/machines/switching_station.lua
+++ b/technic/machines/switching_station.lua
@@ -34,6 +34,9 @@
technic.networks = {}
technic.cables = {}
+local mesecons_path = minetest.get_modpath("mesecons")
+local digilines_path = minetest.get_modpath("digilines")
+
local S = technic.getter
minetest.register_craft({
@@ -57,12 +60,47 @@ minetest.register_node("technic:switching_station",{
local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("Switching Station"))
meta:set_string("active", 1)
+ meta:set_string("channel", "switching_station"..minetest.pos_to_string(pos))
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
end,
after_dig_node = function(pos)
minetest.forceload_free_block(pos)
pos.y = pos.y - 1
minetest.forceload_free_block(pos)
end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if not fields.channel then
+ return
+ end
+ local plname = sender:get_player_name()
+ if minetest.is_protected(pos, plname) then
+ minetest.record_protection_violation(pos, plname)
+ return
+ end
+ local meta = minetest.get_meta(pos)
+ meta:set_string("channel", fields.channel)
+ end,
+ mesecons = {effector = {
+ rules = mesecon.rules.default,
+ }},
+ digiline = {
+ receptor = {action = function() end},
+ effector = {
+ action = function(pos, node, channel, msg)
+ if msg ~= "GET" and msg ~= "get" then
+ return
+ end
+ local meta = minetest.get_meta(pos)
+ if channel ~= meta:get_string("channel") then
+ return
+ end
+ digilines.receptor_send(pos, digilines.rules.default, channel, {
+ supply = meta:get_int("supply"),
+ demand = meta:get_int("demand")
+ })
+ end
+ },
+ },
})
--------------------------------------------------
@@ -190,7 +228,7 @@ minetest.register_abm({
local BA_nodes
local RE_nodes
local machine_name = S("Switching Station")
-
+
-- Which kind of network are we on:
pos1 = {x=pos.x, y=pos.y-1, z=pos.z}
@@ -216,7 +254,7 @@ minetest.register_abm({
minetest.forceload_free_block(pos1)
return
end
-
+
-- Run all the nodes
local function run_nodes(list, run_stage)
for _, pos2 in ipairs(list) do
@@ -231,7 +269,7 @@ minetest.register_abm({
end
end
end
-
+
run_nodes(PR_nodes, technic.producer)
run_nodes(RE_nodes, technic.receiver)
run_nodes(BA_nodes, technic.battery)
@@ -301,6 +339,19 @@ minetest.register_abm({
S("@1. Supply: @2 Demand: @3",
machine_name, technic.pretty_num(PR_eu_supply), technic.pretty_num(RE_eu_demand)))
+ -- If mesecon signal and power supply or demand changed then
+ -- send them via digilines.
+ if mesecons_path and digilines_path and mesecon.is_powered(pos) then
+ if PR_eu_supply ~= meta:get_int("supply") or
+ RE_eu_demand ~= meta:get_int("demand") then
+ local channel = meta:get_string("channel")
+ digilines.receptor_send(pos, digilines.rules.default, channel, {
+ supply = PR_eu_supply,
+ demand = RE_eu_demand
+ })
+ end
+ end
+
-- Data that will be used by the power monitor
meta:set_int("supply",PR_eu_supply)
meta:set_int("demand",RE_eu_demand)
@@ -366,7 +417,7 @@ minetest.register_abm({
meta1 = minetest.get_meta(pos1)
meta1:set_int(eu_input_str, 0)
end
-
+
end,
})
diff --git a/technic_worldgen/oregen.lua b/technic_worldgen/oregen.lua
index c6782e6..fd2393b 100644
--- a/technic_worldgen/oregen.lua
+++ b/technic_worldgen/oregen.lua
@@ -54,13 +54,11 @@ minetest.register_ore({
ore_type = "scatter",
ore = "technic:mineral_zinc",
wherein = "default:stone",
- clust_scarcity = 9*9*9,
+ clust_scarcity = 8*8*8,
clust_num_ores = 5,
clust_size = 7,
y_min = -32,
- y_max = 2,
- noise_params = lead_params,
- noise_threshhold = lead_threshhold,
+ y_max = 2
})
minetest.register_ore({