forked from VoxeLibre/VoxeLibre
Cake+cauldron+endportalfr. put signal 4 comparator
This commit is contained in:
parent
acd58f6fe5
commit
a62b5de79e
|
@ -55,6 +55,7 @@ Please read <http://minecraft.gamepedia.com/Breaking> to learn how digging times
|
||||||
* `cauldron`: Cauldron. 1: Empty. 2-4: Water height
|
* `cauldron`: Cauldron. 1: Empty. 2-4: Water height
|
||||||
* `anvil`: Anvil. 1: No damage. 2-3: Higher damage levels
|
* `anvil`: Anvil. 1: No damage. 2-3: Higher damage levels
|
||||||
* `no_rename=1`: Item cannot be renamed by anvil
|
* `no_rename=1`: Item cannot be renamed by anvil
|
||||||
|
* `comparator_signal=X`: If set, this node outputs a constant (!) comparator signal output of strength X.
|
||||||
|
|
||||||
#### Footnotes
|
#### Footnotes
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ local comparator_deactivate = function(pos, node)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- wether pos has an inventory that contains at least one item
|
-- weather pos has an inventory that contains at least one item
|
||||||
local container_inventory_nonempty = function(pos)
|
local container_inventory_nonempty = function(pos)
|
||||||
local invnode = minetest.get_node(pos)
|
local invnode = minetest.get_node(pos)
|
||||||
local invnodedef = minetest.registered_nodes[invnode.name]
|
local invnodedef = minetest.registered_nodes[invnode.name]
|
||||||
|
@ -75,13 +75,21 @@ local container_inventory_nonempty = function(pos)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- weather pos has an constant signal output for the comparator
|
||||||
|
local static_signal_output = function(pos)
|
||||||
|
local node = minetest.get_node(pos)
|
||||||
|
local g = minetest.get_item_group(node.name, "comparator_signal")
|
||||||
|
return g > 0
|
||||||
|
end
|
||||||
|
|
||||||
-- whether the comparator should be on according to its inputs
|
-- whether the comparator should be on according to its inputs
|
||||||
local comparator_desired_on = function(pos, node)
|
local comparator_desired_on = function(pos, node)
|
||||||
local my_input_rules = comparator_get_input_rules(node);
|
local my_input_rules = comparator_get_input_rules(node);
|
||||||
local back_rule = my_input_rules[1]
|
local back_rule = my_input_rules[1]
|
||||||
local state
|
local state
|
||||||
if back_rule then
|
if back_rule then
|
||||||
state = mesecon.is_power_on(vector.add(pos, back_rule)) or container_inventory_nonempty(vector.add(pos, back_rule))
|
local back_pos = vector.add(pos, back_rule)
|
||||||
|
state = mesecon.is_power_on(back_pos) or container_inventory_nonempty(back_pos) or static_signal_output(back_pos)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- if back input if off, we don't need to check side inputs
|
-- if back input if off, we don't need to check side inputs
|
||||||
|
@ -307,19 +315,19 @@ minetest.register_craft({
|
||||||
|
|
||||||
-- Register active block handlers
|
-- Register active block handlers
|
||||||
minetest.register_abm({
|
minetest.register_abm({
|
||||||
label = "Comparator check for containers",
|
label = "Comparator signal input check (comparator is off)",
|
||||||
nodenames = {
|
nodenames = {
|
||||||
"mcl_comparators:comparator_off_comp",
|
"mcl_comparators:comparator_off_comp",
|
||||||
"mcl_comparators:comparator_off_sub",
|
"mcl_comparators:comparator_off_sub",
|
||||||
},
|
},
|
||||||
neighbors = {"group:container"},
|
neighbors = {"group:container", "group:comparator_signal"},
|
||||||
interval = 1,
|
interval = 1,
|
||||||
chance = 1,
|
chance = 1,
|
||||||
action = update_self,
|
action = update_self,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_abm({
|
minetest.register_abm({
|
||||||
label = "Comparator check for no containers",
|
label = "Comparator signal input check (comparator is on)",
|
||||||
nodenames = {
|
nodenames = {
|
||||||
"mcl_comparators:comparator_on_comp",
|
"mcl_comparators:comparator_on_comp",
|
||||||
"mcl_comparators:comparator_on_sub",
|
"mcl_comparators:comparator_on_sub",
|
||||||
|
|
|
@ -46,7 +46,7 @@ minetest.register_node("mcl_cake:cake", {
|
||||||
fixed = full_cake
|
fixed = full_cake
|
||||||
},
|
},
|
||||||
stack_max = 1,
|
stack_max = 1,
|
||||||
groups = {handy=1, cake=7, food=2,no_eat_delay=1, attached_node=1, dig_by_piston=1},
|
groups = {handy=1, cake=7, food=2,no_eat_delay=1, attached_node=1, dig_by_piston=1, comparator_signal=14},
|
||||||
drop = '',
|
drop = '',
|
||||||
on_rightclick = function(pos, node, clicker, itemstack)
|
on_rightclick = function(pos, node, clicker, itemstack)
|
||||||
local newcake = minetest.do_item_eat(2, ItemStack("mcl_cake:cake_6"), ItemStack("mcl_cake:cake"), clicker, {type="nothing"})
|
local newcake = minetest.do_item_eat(2, ItemStack("mcl_cake:cake_6"), ItemStack("mcl_cake:cake"), clicker, {type="nothing"})
|
||||||
|
@ -102,7 +102,7 @@ local register_slice = function(level, nodebox, desc)
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = nodebox,
|
fixed = nodebox,
|
||||||
},
|
},
|
||||||
groups = {handy=1, cake=level, food=2,no_eat_delay=1,attached_node=1,not_in_creative_inventory=1,dig_by_piston=1},
|
groups = {handy=1, cake=level, food=2,no_eat_delay=1,attached_node=1,not_in_creative_inventory=1,dig_by_piston=1,comparator_signal=level*2},
|
||||||
drop = '',
|
drop = '',
|
||||||
on_rightclick = on_rightclick,
|
on_rightclick = on_rightclick,
|
||||||
sounds = mcl_sounds.node_sound_leaves_defaults(),
|
sounds = mcl_sounds.node_sound_leaves_defaults(),
|
||||||
|
@ -118,9 +118,9 @@ local register_slice = function(level, nodebox, desc)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
register_slice(6, slice_6, "Cake (6 Slices Left")
|
register_slice(6, slice_6, "Cake (6 Slices Left)")
|
||||||
register_slice(5, slice_5, "Cake (5 Slices Left")
|
register_slice(5, slice_5, "Cake (5 Slices Left)")
|
||||||
register_slice(4, slice_4, "Cake (4 Slices Left")
|
register_slice(4, slice_4, "Cake (4 Slices Left)")
|
||||||
register_slice(3, slice_3, "Cake (3 Slices Left")
|
register_slice(3, slice_3, "Cake (3 Slices Left)")
|
||||||
register_slice(2, slice_2, "Cake (2 Slices Left")
|
register_slice(2, slice_2, "Cake (2 Slices Left)")
|
||||||
register_slice(1, slice_1, "Cake (1 Slice Left")
|
register_slice(1, slice_1, "Cake (1 Slice Left)")
|
||||||
|
|
|
@ -79,7 +79,7 @@ local register_filled_cauldron = function(water_level, description, river_water)
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
groups = {pickaxey=1, not_in_creative_inventory=1, cauldron=(1+water_level)},
|
groups = {pickaxey=1, not_in_creative_inventory=1, cauldron=(1+water_level), comparator_signal=water_level},
|
||||||
node_box = cauldron_nodeboxes[water_level],
|
node_box = cauldron_nodeboxes[water_level],
|
||||||
collision_box = cauldron_nodeboxes[0],
|
collision_box = cauldron_nodeboxes[0],
|
||||||
selection_box = { type = "regular" },
|
selection_box = { type = "regular" },
|
||||||
|
|
|
@ -309,7 +309,7 @@ minetest.register_node("mcl_portals:end_portal_frame", {
|
||||||
minetest.register_node("mcl_portals:end_portal_frame_eye", {
|
minetest.register_node("mcl_portals:end_portal_frame_eye", {
|
||||||
description = "End Portal Frame with Eye of Ender",
|
description = "End Portal Frame with Eye of Ender",
|
||||||
_doc_items_create_entry = false,
|
_doc_items_create_entry = false,
|
||||||
groups = { creative_breakable = 1, not_in_creative_inventory = 1 },
|
groups = { creative_breakable = 1, not_in_creative_inventory = 1, comparator_signal = 15 },
|
||||||
tiles = { "mcl_portals_endframe_top.png^[lowpart:75:mcl_portals_endframe_eye.png", "mcl_portals_endframe_bottom.png", "mcl_portals_endframe_eye.png^mcl_portals_endframe_side.png" },
|
tiles = { "mcl_portals_endframe_top.png^[lowpart:75:mcl_portals_endframe_eye.png", "mcl_portals_endframe_bottom.png", "mcl_portals_endframe_eye.png^mcl_portals_endframe_side.png" },
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
|
|
Reference in New Issue