# ComputerCraft

ComputerCraft est un mod du jeu vidéo Minecraft, sorti pour la première fois le 24 décembre 2011. Il a été initialement conçu et créé par Daniel Ratcliffe, également connu sous le pseudonyme Dan200. Le mod permet de fabriquer et de placer des ordinateurs dans Minecraft, après quoi ils peuvent être programmés dans le langage de programmation Lua. Lorsqu'un joueur fait un clic droit sur ordinateur, il s'ouvre une interface semblable à un terminal. Le joueur peut ensuite programmer et exécuter des programmes et du code qu'il a créé ou obtenu auprès d'autres joueurs. Il est possible d'interagir avec le monde virtuel de Minecraft au travers de divers blocs périphériques. La version originale de ComputerCraft a été téléchargée depuis CurseForge plus de 20 millions de fois entre octobre 2013 et janvier 2023.

## Histoire

Le 24 décembre 2011, Daniel Ratcliffe met en ligne une vidéo sur YouTube démontrant le fonctionnement de ComputerCraft$^,$. Le même jour, il a créé un compte sur le forum minecraftforums.net et publie un article sur le mod qu'il a créé pour Minecraft 1.0, avec des liens web qu'il a créés pour le mod. Le même jour, des dizaines de personnes ont répondu avec enthousiasme au message du forum et le mod a rapidement gagné en popularité. Le 27 janvier 2012, Ratcliffe publie une capture d'écran du site Web de l'hébergeur de fichiers MediaFire, qui montrait que le mod avait déjà été téléchargé plus de 100 000 fois.
Dans les années qui ont suivi, Ratcliffe continue à mettre à jour le mod pour les nouvelles versions de Minecraft et plusieurs fonctionnalités sont ajoutées, telles que la possibilité de communiquer avec Internet via HTTP dans la version 1.1 de ComputerCraft. Dans la version 1.2, la possibilité est apparue d'échanger des logiciels et des données entre ordinateurs avec des lecteurs de disquettes, des disquettes et des câbles réseau redstone. Le 23 février 2012, Ratcliffe publie la version 1.3, qui ajoute des turtles, une sorte de robots programmables. Le mod était également basé sur le framework de modding Forge depuis cette version. Dans la version 1.3.1 pour Minecraft 1.2.3, la trilatération est implémenté, elle permet le positionnement des ordinateurs. Depuis la version 1.4, les turtles peuvent interagir avec le monde « physique » en cassant et en plaçant des blocs et en attaquant avec des armes. La sortie de la version 1.42 pour Minecraft 1.3.2 permet l'impression sur papier, et depuis la version 1.45, des variantes avancées de blocs sont devenues disponibles. Dans la version 1.5.1, la communication sans fil via des modems est devenue possible et le mod a été porté sur Minecraft 1.5.

### Open Source

La dernière mise à jour publiée par Ratcliffe est la version 1.79 de ComputerCraft pour Minecraft 1.8.9, publiée le 1er avril 2016. Le 1er mai 2017, Ratcliffe a annoncé qu'il rendrait le code source du mod accessible au public sur GitHub, relativement à la licence publique ComputerCraft (CCPL)$^,$. Cela a permis à d'autres de copier, modifier, étendre et mettre à jour le mod vers les nouvelles versions de Minecraft. Les utilisateurs peuvent soumettre leurs modifications au mod via une pull request, après quoi ils peuvent être insérés dans le mod original sous la supervision de Ratcliffe.

### Forks

La dernière fois que Ratcliffe a apporté des modifications à son mod par d'autres personnes, c'était le 26 mai 2019. Le mécontentement au sein de la communauté des joueurs de Minecraft ayant un intérêt pour ComputerCraft a engendré plusieurs forks tels que CC : Tweaked et CC : Restitched dans les années qui ont suivi. Le fork le plus connu, CC: Tweaked s'est développé comme un projet collaboratif dirigé par Jonathan Coates, également connu sous le pseudonyme SquidDev. Le mod CC: Tweaked a été téléchargé au total plus de 21,5 millions de fois jusqu'en juillet 2022, dépassant les téléchargements du projet original au printemps 2022.

## Fonctionnalité
### CraftOS

CraftOS est le « système d'exploitation » qui est préinstallé sur tous les blocs d'ordinateurs par défaut. Ce système de base, lui-même écrit en Lua, est similaire à MS-DOS. Il prend en charge une poignée de commandes et de programmes génériques tels que clear, ls, copy, delete et qui peuvent être utilisés, par exemple, pour interagir avec le système de fichiers virtuel. De plus, un éditeur de texte générique est disponible, qui peut être appelé: edit et il est possible d'appeler un REPL interactif (Read-eval-print loop) via la commande lua, ce qui permet de saisir du code qui sera exécuté immédiatement. Il n'est pas possible de modifier ou de supprimer ce système d'exploitation, mais les joueurs sont libres de développer leur propre shell qui peut être construit sur CraftOS comme ils le souhaitent, notamment via la création d'un fichier startup, exécuté automatiquement au démarrage de l'ordinateur.

### Blocs et éléments

Le mod ComputerCraft ajoute divers blocs et objets au jeu. Des versions standard et avancées de nombreux blocs et éléments sont disponibles, avec la version standard colorée en gris et les versions avancées colorées en or. Les versions avancées des blocs et des éléments offrent souvent plus de fonctionnalités par rapport aux versions standard.

#### Ordinateurs

L'ordinateur est l'un des blocs les plus importants que le mod ajoute à Minecraft. Le joueur peut interagir avec ce bloc par le biais d'une interface un peu comme un terminal informatique. Lorsqu'un nouveau bloc d'ordinateur est placé, il contiendra automatiquement le système d'exploitation virtuel CraftOS (dans le dossier en lecture-seule rom). En plus de la saisie au clavier, la version avancée de ce bloc prend également en charge la souris et un affichage couleur avec 16 couleurs, au lieu de niveaux de gris.

#### Turtles

Une turtle est un bloc d'ordinateur mobile ; une sorte de robot programmable. Une turtle peut se déplacer en utilisant du carburant tel que du charbon, de la lave ou d'autres objets Minecraft combustibles. Les turtles peuvent être programmées et utilisées comme des ordinateurs normaux, mais ont un écran plus petit et une petite quantité de stockage « physique » (inventaire) pour les blocs et les objets du jeu. De plus, les turtles peuvent être équipées d'outils et d'armes tels que des pioches et des épées pour miner des blocs et tuer des monstres.

#### Moniteurs

Les blocs moniteurs peuvent être assemblés pour créer des écrans rectangulaires plus grands qui peuvent s'étendre sur plusieurs blocs. Ces écrans peuvent afficher des textes et des images dans le monde Minecraft, sans qu'un joueur ait à cliquer d'abord sur un bloc. Le moniteur avancé prend en charge la saisie « tactile » et l'affichage en couleur (16 couleurs).

#### Autres périphériques

Divers blocs périphériques sont disponibles, tels que des lecteurs de disquettes pour lire et écrire sur et depuis des disquettes, des imprimantes pour imprimer des pages papier et des modems pour permettre la communication sans fil et la détermination de l'emplacement par trilatération.