Create: Computing AgesDoc Brass
Périphériques

Réservoirs

Réservoirs à fluide, bassins et becs verseurs de Create, et tout bloc qui contient des fluides : quel fluide, combien, et quelle place.

Tout bloc qui contient des fluides est un périphérique de type tank : réservoirs à fluide, bassins, becs verseurs et égouttoirs de Create, et les réservoirs des autres mods. Un programme lit quel fluide contient chacune de ses cuves, combien, et combien elle peut en contenir : de quoi dessiner une jauge, donner l'alerte avant que la lave ne manque, ou lancer une pompe quand l'eau baisse.

Brass
local reservoir = peripheral.wrap("left")
local t = reservoir.tanks()[1]
print(t.fluid, t.amount .. " / " .. t.capacity .. " mB")
Méthodes
tank.tanks()Ce que contient le bloc, cuve par cuve.

Installation

Le joindre. Posez le bloc contre une face de l'ordinateur (peripheral.wrap("left")), ou contre un Câble de données du réseau de l'ordinateur, à partir du Mini-ordinateur : il s'appelle alors par exemple tank@120,64,-35. peripheral.find("tank") prend le premier. Comme pour les inventaires, un bloc est vu par la face qui touche l'ordinateur ou le câble, ce qui compte pour les blocs qui montrent des cuves différentes selon la face. Voir Périphériques.

Les unités. Les fluides se mesurent en millibuckets (mB, « mS » dans l'interface française de Create) : un seau vaut 1000 mB. Un réservoir à fluide de Create contient 8000 mB par bloc (sauf si le serveur l'a changé), et un grand réservoir fait de plusieurs blocs est une seule cuve de toute sa taille.

Les blocs à plusieurs métiers. Un bassin contient des objets et des fluides : c'est d'abord un inventaire (son nom sur un câble est inventory@...), avec en plus la méthode tanks, et peripheral.find("tank") le trouve aussi.

Lecture

#

tank.tanks()

→ table

Ce que contient le bloc, cuve par cuve.

Renvoie
table
une liste avec une entrée par cuve du bloc, {fluid =, amount =, capacity =}

Chaque entrée de la liste est une table :

champcontenu
fluidl'identifiant du fluide, comme "minecraft:water", "minecraft:lava" ou "create:honey" ; nil quand la cuve est vide
amountcombien de fluide elle contient, en mB ; 0 quand elle est vide
capacitycombien elle peut en contenir, en mB

La plupart des blocs n'ont qu'une cuve : tanks()[1] est donc celle qu'il vous faut. La liste n'a pas de trous : parcourez-la avec ipairs.

Brass
local reservoir = peripheral.wrap("left")
for i, t in ipairs(reservoir.tanks()) do
  local fluide = t.fluid or "vide"
  print(i .. " : " .. fluide .. ", " .. t.amount .. " / " .. t.capacity .. " mB")
end

Un bassin de Create a quatre cuves de 1000 mB : ses deux cuves de sortie d'abord, puis ses deux cuves d'entrée. Sur un bassin qui contient l'eau d'une recette de mixage, il affiche à peu près :

Écran
1 : vide, 0 / 1000 mB
2 : vide, 0 / 1000 mB
3 : minecraft:water, 750 / 1000 mB
4 : vide, 0 / 1000 mB

fluid vaut nil quand une cuve est vide : testez-le avant de le comparer ou de le coller avec .., comme ci-dessus. Quand le bloc n'est plus un réservoir (cassé, remplacé), l'appel arrête le programme avec not a tank anymore.

Exemples

Une jauge de niveau

Un réservoir dessiné à l'écran, rempli jusqu'à son niveau. Ici, la mesure est écrite en toutes lettres pour que l'image puisse être faite ; dans le monde, la première ligne serait local t = reservoir.tanks()[1].

Brass
local t = {fluid = "minecraft:lava", amount = 5300, capacity = 8000}
local x, y, w, h = 30, 30, 70, 130
gfx.clear("black")
gfx.text(30, 8, "RESERVE DE LAVE", "white", 2)
local niveau = math.floor((h - 4) * t.amount / t.capacity)
gfx.rect(x + 2, y + h - 2 - niveau, w - 4, niveau, "orange", true)
gfx.rect(x, y, w, h, "light_gray", 2)
local pourcent = math.floor(t.amount / t.capacity * 100)
gfx.text(130, 60, pourcent .. " %", "orange", 4)
gfx.text(130, 110, t.amount .. " / " .. t.capacity .. " MB", "light_gray", 2)
Écran
Écran

Mettez le dessin dans une boucle avec sleep(1) et un moniteur contre l'ordinateur : la jauge suit le réservoir.

Une alarme quand la lave baisse

Un réservoir à fluide de Create plein de lave alimente un générateur de pierre. Sous deux seaux, une lampe rouge s'allume sur l'ordinateur et un message dit pourquoi ; l'alarme s'éteint quand le réservoir est rempli.

Brass
local reservoir = peripheral.wrap("left")
local BAS = 2000  -- mB
while true do
  local t = reservoir.tanks()[1]
  local lave = 0
  if t.fluid == "minecraft:lava" then
    lave = t.amount
  end
  local manque = lave < BAS
  rs.set("top", manque)
  if manque then
    display.set({"LAVE BASSE", lave .. " mB restants"})
  else
    display.set({"Lave", lave .. " mB"})
  end
  sleep(5)
end

Le test sur t.fluid donne aussi l'alerte quand quelqu'un remplit le réservoir d'eau par erreur. Pour une surveillance complète des stocks, objets et fluides ensemble, voir Alarme de stock et panneau d'affichage et Tableau de bord d'usine.