Create: Computing AgesDoc Brass
Bibliothèques

display

Des lignes pour une Liaison d'affichage de Create pointée sur l'ordinateur : panneaux d'affichage, tubes Nixie, pancartes.

Tous les ordinateurs

La Liaison d'affichage de Create recopie une information d'un bloc source vers un affichage : un panneau d'affichage, une rangée de tubes Nixie, une pancarte, un livre sur un pupitre. Un ordinateur est lui aussi une source, et la bibliothèque display choisit les lignes qu'il propose. Tous les ordinateurs l'ont, Calculateur à tubes compris : un tableau de gare ou un compteur de stock n'a pas besoin d'écran.

Brass
display.set({"Fer", "1250 lingots"})

Mise en place. Comme pour toute source de Create :

  1. Faites un clic droit sur l'affichage (la cible) avec la Liaison d'affichage en main, puis posez la liaison contre l'ordinateur, sur n'importe quelle face. La cible peut se trouver jusqu'à 64 blocs de la liaison (le réglage displayLinkRange de Create).
  2. Faites un clic droit sur la Liaison d'affichage : sa source est « Sortie d'ordinateur ». Choisissez la ligne de l'affichage où le texte commence.
  3. Dans le programme, écrivez les lignes avec display.set ou display.line.

Quand l'affichage change. La Liaison d'affichage lit les lignes de l'ordinateur toutes les demi-secondes (10 ticks) et les recopie sur sa cible, à partir de la ligne choisie dans ses réglages. Un programme peut appeler display.set aussi souvent qu'il veut : seules les lignes présentes à la lecture suivante s'affichent. Tant que la Liaison d'affichage reçoit un signal de redstone, elle ne se met plus à jour (la règle de Create pour toutes les Liaisons d'affichage), et elle reprend dès que le signal s'arrête.

Ce que montre chaque affichage.

affichagece qu'il montre
Panneau d'affichageune ligne de l'ordinateur par ligne du panneau : 2 lignes par bloc de hauteur, un peu plus de 4 caractères par bloc de largeur (17 sur un panneau de 4 blocs de large). Les lignes du panneau sous la dernière ligne de l'ordinateur sont effacées (jusqu'à une ligne qu'écrit une autre Liaison d'affichage). Le panneau ne marche que s'il tourne.
Tubes Nixiela première ligne seulement, 2 caractères par tube de la rangée
Pancarte4 lignes au plus, chacune coupée à la largeur de la pancarte
Pupitre avec un livreune ligne par page

Toutes les Liaisons d'affichage pointées sur l'ordinateur reçoivent les mêmes lignes. Plusieurs liaisons peuvent lire un même ordinateur (un panneau sur une face, une rangée de tubes Nixie sur une autre), mais les tubes Nixie montrent toujours la ligne 1.

Durée de vie. Les lignes restent jusqu'à ce que le programme les change, même après sa fin. Un redémarrage ou un arrêt les vide, et l'affichage s'efface à la lecture suivante.

Fonctions
display.set(lines)Remplace toutes les lignes proposées aux Liaisons d'affichage.
display.line(n, text)Change une ligne et garde les autres.
display.clear()Retire toutes les lignes : l'ordinateur ne propose plus rien à ses Liaisons d'affichage.

Écrire des lignes

#

display.set(lines)

Remplace toutes les lignes proposées aux Liaisons d'affichage.

Paramètres
lines table|string
une liste de lignes, ou un seul texte où chaque "\n" commence une nouvelle ligne

Elle prend une liste de lignes, ou un seul texte :

Brass
display.set({"Fer", "1250 lingots"})      -- deux lignes
display.set("Fer\n1250 lingots")           -- les deux mêmes lignes
display.set({"Vitesse", 128, "tr/min"})    -- les nombres sont écrits en texte
display.set()                              -- plus aucune ligne, comme display.clear()

Les limites : 16 lignes et 128 caractères par ligne. Les lignes plus longues sont coupées, et les valeurs d'une liste après la 16e sont ignorées. Dans un texte unique, la 16e ligne garde tout le reste du texte. Chaque valeur d'une liste devient du texte comme l'écrit tostring.

Un tableau des départs de gare. Un panneau d'affichage de 5 blocs de large et 2 de haut (4 lignes de 22 caractères) montre les prochains trains. Les heures sont celles de Minecraft : os.day_time() compte 1000 ticks par heure, et 0 correspond à 6 h du matin. Le tableau est construit par une fonction, qu'on peut donc essayer avec une heure fixe :

Brass
local DEPARTS = {
  {heure = 7500, train = "Rapide du fer", quai = 1},
  {heure = 9000, train = "Navette mine", quai = 2},
  {heure = 12000, train = "Ligne du port", quai = 1},
}

local function horloge(ticks)
  local t = (ticks + 6000) % 24000
  return string.format("%02d:%02d", t // 1000, t % 1000 * 60 // 1000)
end

local function tableau(maintenant)
  local lignes = {"Départs      " .. horloge(maintenant)}
  for _, d in ipairs(DEPARTS) do
    if d.heure >= maintenant then
      table.insert(lignes, string.format("%s %-13s Q%d", horloge(d.heure), d.train, d.quai))
    end
  end
  return lignes
end

for _, ligne in ipairs(tableau(7000)) do
  print(ligne)
end
Écran
Départs      13:00
13:30 Rapide du fer Q1
15:00 Navette mine  Q2
18:00 Ligne du port Q1

Sur l'ordinateur, la dernière boucle devient la boucle principale du programme, avec l'heure réelle :

Brass
while true do
  display.set(tableau(os.day_time()))
  sleep(5)
end

Quand un train est parti, sa ligne disparaît et les suivantes remontent ; le panneau efface les lignes en trop.

Voir aussi display.line() display.clear()

#

display.line(n, text)

Change une ligne et garde les autres.

Paramètres
n number
le numéro de la ligne, de 1 à 16
text string
le texte de cette ligne (les nombres et autres valeurs sont écrits en texte)

Pratique quand quelques valeurs changent à des moments différents : le titre reste, seuls les chiffres bougent.

Brass
display.set({"Salle des fours", "", "Charbon restant"})
display.line(2, "en marche")
display.line(4, 512)   -- la ligne 4 n'existait pas encore : elle est ajoutée

Quand n dépasse la dernière ligne, les lignes intermédiaires sont ajoutées, vides. Un numéro en dessous de 1 ou au-dessus de 16 est ignoré, sans erreur. n doit être un nombre entier. Sans texte, c'est le mot nil qui s'écrit : pour vider une ligne, écrivez display.line(n, "").

Un compteur de stock sur tubes Nixie. Une rangée de trois tubes Nixie affiche 6 caractères : assez pour le fer du Coffre à objet renforcé de gauche. Les tubes Nixie ne montrent que la première ligne, le compte va donc sur la ligne 1 :

Brass
local coffre = peripheral.wrap("left")
while true do
  display.line(1, coffre.count("minecraft:iron_ingot"))
  sleep(2)
end

Voir inventory.count() pour le coffre renforcé, et Alarme de stock et panneau d'affichage pour une alarme de stock complète.

Voir aussi display.set() display.clear()

#

display.clear()

Retire toutes les lignes : l'ordinateur ne propose plus rien à ses Liaisons d'affichage.

À la lecture suivante, un panneau d'affichage et des tubes Nixie s'effacent. Une pancarte et un pupitre n'effacent que la première ligne (ou page) qu'écrit la liaison, et gardent les autres : pour vider toute une pancarte, envoyez-lui plutôt des lignes vides.

Brass
display.clear()                    -- un panneau d'affichage s'efface
display.set({"", "", "", ""})      -- une pancarte s'efface aussi

Une horloge sur une pancarte. L'heure du jour sur une pancarte de la place du village, rafraîchie toutes les quelques secondes (le programme intégré clock fait de même avec un moniteur) :

Brass
while true do
  local t = (os.day_time() + 6000) % 24000
  local texte = string.format("%02d:%02d", t // 1000, t % 1000 * 60 // 1000)
  display.set({"", "Mairie", texte, ""})
  sleep(5)
end

Une heure de Minecraft dure 50 secondes : un rafraîchissement toutes les 5 secondes suffit pour l'horloge d'un village.

Astuce

Un ordinateur avec un écran peut montrer plus qu'une Liaison d'affichage : des couleurs, des barres, des dessins. Posez un Moniteur cathodique ou un Moniteur LCD contre lui (Moniteurs, Écrans et moniteurs) et dessinez avec term ou gfx. La Liaison d'affichage reste le bon choix pour les affichages de Create, et pour les ordinateurs sans écran à proximité.

Voir aussi display.set()