
stock
surveille un coffre
> examples stock > edit stock
Surveille un coffre (ou un Coffre à objet renforcé de Create, un tonneau, un dépôt...) et allume une alarme quand il contient moins de 64 objets. Le total part aussi à l'écran et vers les Liaisons d'affichage. Le cœur de toute usine : savoir ce qu'on a, et réagir quand ça manque.
Quoi construire
- À gauche de l'ordinateur (vu face à l'écran), un bloc avec un inventaire : coffre, tonneau, Coffre à objet renforcé, dépôt...
- Dessus, une Lampe à redstone pour l'alarme, ou tout ce qui obéit à la redstone.
- Si vous voulez, une Liaison d'affichage de Create pointée sur l'ordinateur, pour afficher
Stock : 123sur un Panneau d'affichage.
Si aucun périphérique ne touche la face gauche, le programme s'arrête aussitôt avec pas de coffre à gauche.
Comment il marche
local chest = peripheral.wrap("left")
if chest == nil then
error("pas de coffre à gauche")
endperipheral.wrap() donne un objet pour piloter le bloc d'une face, ou nil quand il n'y en a pas. error() arrête le programme avec un message, bien plus clair qu'un plantage quelques lignes plus loin.
local total = chest.count()
rs.set("top", total < threshold)inventory.count() additionne les objets de tous les emplacements ; chest.count("minecraft:iron_ingot") ne compte qu'une sorte d'objet. total < threshold vaut true ou false, que rs.set() accepte directement : la lampe est allumée exactement tant que le stock est bas.
display.set({"Stock : " .. total})
print("Objets : " .. total)
sleep(5)Un inventaire n'envoie aucun évènement quand il change : le programme regarde donc de nouveau toutes les 5 secondes. Compter coûte quelques instructions par emplacement de l'inventaire : un grand coffre renforcé, c'est très bien toutes les quelques secondes, mais pas vingt fois par seconde.
Pour piloter une chaîne de production plutôt qu'une lampe, posez un Embrayage de Create dessus et écrivez total >= threshold : un embrayage alimenté débraye, les machines s'arrêtent donc quand le coffre est plein et repartent quand il se vide.
Idées
- Ne comptez que ce qui compte :
chest.count("minecraft:iron_ingot"). Les identifiants des objets s'affichent dans les infobulles avancées (F3+H). Empêchez la lampe de clignoter autour du seuil avec deux limites : l'alarme démarre sous 64 et ne s'arrête qu'au-dessus de 256.
Brass local BAS, HAUT = 64, 256 local alarme = false for _, total in ipairs({300, 200, 60, 100, 250, 260}) do if total < BAS then alarme = true elseif total > HAUT then alarme = false end print(total, alarme) end300 false 200 false 60 true 100 true 250 true 260 false
- Surveillez plusieurs coffres : à partir du Mini-ordinateur, les coffres le long d'un Câble de données sont aussi des périphériques, trouvés avec
peripheral.find()ouperipheral.list(). - Déplacez des objets quand le stock est haut avec
inventory.push(). - La recette alarme de stock en construit une version complète, avec un écran et plusieurs objets.
Le programme
-- Surveille le coffre (ou coffre-fort, dépôt...) à gauche.
-- Sous le seuil, la sortie du dessus s'allume : une lampe d'alarme.
-- Pour piloter une chaîne de production par un embrayage Create,
-- écrivez total >= threshold : un embrayage alimenté débraye.
local chest = peripheral.wrap("left")
if chest == nil then
error("pas de coffre à gauche")
end
local threshold = 64
while true do
local total = chest.count() -- ou chest.count("minecraft:iron_ingot")
rs.set("top", total < threshold)
display.set({"Stock : " .. total})
print("Objets : " .. total)
sleep(5)
end