# ComputerCraft

ComputerCraft is een (onofficiële) mod (een aanpassing of uitbreiding) op het computerspel Minecraft, voor het eerst uitgebracht op 24 december 2011. Het is oorspronkelijk bedacht en gemaakt door Daniel Ratcliffe, ook bekend onder pseudoniem Dan200. De mod maakt het mogelijk om Computerblokken te vervaardigen en te plaatsen binnen de sandboxomgeving van Minecraft, waarna deze te programmeren zijn in programmeertaal Lua. Wanneer een speler op een computerblok klikt, wordt er een weergave geopend die veel weg heeft van een computerterminal. De speler kan nu programmeren en zelfgemaakte of van andere spelers verkregen programma's en code uitvoeren. Het is mogelijk om met diverse andere randapperatuurblokken met de virtuele wereld van Minecraft te interacteren. De originele versie van ComputerCraft is tussen oktober 2013 en maart 2022 in totaal meer dan 19,4 miljoen keer gedownload van CurseForge.

## Geschiedenis

Op 24 december 2011 uploadde Daniel Ratcliffe een video op YouTube, waarin hij de werking van ComputerCraft demonstreerde. Op diezelfde dag maakte hij een account aan op het forum minecraftforums.net en plaatste daar een post over de mod die hij had gemaakt voor Minecraft 1.0, met een link naar een website en wiki die hij voor de mod gemaakt heeft. Op diezelfde dag reageerden tientallen mensen enthousiast op het forumbericht, en de mod won snel aan populariteit. Op 27 januari in 2012 postte Ratcliffe een screenshot van de website van bestandshoster MediaFire, waar te zien was dat de mod al meer dan 100.000 keer gedownload was.
In de jaren die volgden, bleef Ratcliffe de mod bijwerken naar nieuwe Minecraft-versies en er werden diverse functionaliteiten toegevoegd, zoals de mogelijkheid om via http met internet te communiceren in ComputerCraft versie 1.1. In versie 1.2 verscheen de mogelijkheid om met diskettestations, diskettes en "redpower" netwerkkabels software en data uit te wisselen tussen computers. Op 23 februari 2012 bracht Ratcliffe versie 1.3 uit, die turtles, een soort programmeerbare robots bevatte. De mod was sinds deze versie ook gebaseerd op het modding-framework Forge. In versie 1.3.1 voor Minecraft 1.2.3 werden monitorblokken geïmplementeerd en werd positiebepaling door middel van triangulatie mogelijk. Sinds versie 1.4 konden turtles interactie hebben met de "fysieke" wereld door blokken te mijnen en te plaatsen en door aan te kunnen vallen met wapens. De uitgave van versie 1.42 voor Minecraft 1.3.2 maakte het printen op papier mogelijk en sinds versie 1.45 zijn de geavanceerde varianten van blokken beschikbaar gekomen. In versie 1.5.1 werd draadloze communicatie via modems mogelijk en was de mod geporteerd naar Minecraft 1.5.

### ComputerCraftEdu

Sinds 2014 werkte Ratcliffe aan een versie van de mod gericht op het onderwijs; ComputerCraftEdu. Op 1 juli 2015 lanceerde hij deze variant van de mod, die net als Minecraft: Education edition gericht was op het bieden van extra mogelijkheden voor toepassingen in het onderwijs. Deze variant was ontwikkeld samen met TeacherGaming, een project om met behulp van gaming scholieren concepten als logica en programmeren aan te leren. Deze educatieve mod verschilt van de standaardmod, en biedt functies waarmee leraren eenvoudig turtles kunnen besturen en resetten, terwijl deze samen met of door kinderen geprogrammeerd kunnen worden.

### Open-sourcing

De laatste update die Ratcliffe uitgebracht heeft, is ComputerCraft versie 1.79 voor Minecraft 1.8.9, gepubliceerd op 1 april 2016. Op 1 mei 2017 heeft Ratcliffe aangekondigd om de broncode van de mod openbaar beschikbaar te stellen op GitHub onder een eigen, relatief controversiële licentie; de ComputerCraft Public Licence (CCPL). Hierdoor werden anderen toegestaan om de mod te kopiëren, aan te passen, uit te breiden en bij te werken naar nieuwe Minecraft versies. Gebruikers kunnen hun aanpassingen aan de mod terugkoppelen via een pull-request, waarna deze onder toezicht van Ratcliffe ingevoegd kunnen worden in de oorspronkelijke mod.

### Forks

De laatste keer dat Ratcliffe aanpassingen van anderen heeft doorgevoerd in zijn mod heeft op 26 mei 2019 plaatsgevonden. Uit onvrede binnen de gemeenschap van Minecraft-spelers met interesse in ComputerCraft zijn in de jaren daarna diverse forks ontstaan zoals CC: Restitched en CC: Tweaked. De bekendste fork, CC: Tweaked ontwikkeld als samenwerkingsproject onder leiding van Jonathan Coates, ook bekend onder pseudoniem SquidDev. De mod CC: Tweaked is tot juli 2022 in totaal meer dan 21,5 miljoen keer gedownload, waarmee het aantal downloads van het originele project is ingehaald in de lente van 2022.

## Functionaliteit
### CraftOS

CraftOS is het "besturingssysteem" dat standaard op alle computerblokken voorgeïnstalleerd staat. Dit basale besturingssysteem, dat zelf ook geschreven is in Lua, heeft veel weg van MS-DOS. Het ondersteund een handvol aan generieke commando's en programma's zoals clear, ls, copy, remove en wget die gebruikt kunnen worden, bijvoorbeeld om met het virtuele bestandssysteem te interacteren. Daarnaast is er een generieke tekst-editor aanwezig, die aangeroepen kan worden als edit. Verder is het mogelijk om een interactieve REPL (Read-eval-print lus) op te roepen via lua, waarmee het mogelijk is om code in te typen die direct uitgevoerd wordt. Het is niet mogelijk om dit besturingssysteem te veranderen of te verwijderen, maar het staat spelers vrij om een eigen schil te ontwikkelen die naar eigen wens over CraftOS heen gebouwd kan worden.

### Blokken en items

De mod ComputerCraft voegt verschillende blokken en items toe aan het spel. Van veel blokken en items zijn standaard en geavanceerde versies beschikbaar, waarbij de standaardversie grijsgekleurd en de geavanceerde versies goudgekleurd zijn. Gevanceerde versies van blokken en items bieden vaak meer functionaliteit of mogelijkheden aan in vergelijking tot de standaardversies.

#### Computers

Een computerblok is een van de belangrijkste blokken die de mod toevoegt aan Minecraft. De speler kan met dit blok interacteren via een weergave die veel weg heeft van een computerterminal. Wanneer een nieuw computerblok geplaatst wordt, zal deze automatisch het virtuele besturingssysteem CraftOS bevatten. De geavanceerde versie van dit blok ondersteunt naast toetsenbordinvoer ook muisinvoer en een kleurenweergave met 16 kleuren, in plaats van grijstinten.

#### Turtles

Een turtle is een mobiel computerblok; een soort programmeerbare robot. Een turtle kan zichzelf voortbewegen met verbruik van brandstof zoals lava, kolen of andere brandbare Minecraft-items. Turtles kunnen geprogrammeerd en gebruikt worden zoals normale computerblokken, maar hebben een kleiner scherm en een kleine hoeveelheid "fysieke" opslag (inventory) voor blokken en items uit de game. Daarnaast kunnen turtles voorzien worden van gereedschap en wapens zoals pikhouwelen en zwaarden om blokken mee te mijnen en monsters mee te doden.

#### Monitoren

Monitor-blokken kunnen aaneengesloten worden om zo grotere rechthoekige of vierkante schermen te bouwen die meerdere blokken kunnen beslaan. Deze schermen kunnen teksten en afbeeldingen tonen in de virtuele wereld van Minecraft, zonder dat een speler eerst op een blok hoeft te klikken. De geavanceerde monitor ondersteunt "touch"-input en kleurenweergave in 16 kleuren.

#### Randapperatuur

Er zijn verschillende randapperatuurblokken beschikbaar zoals diskettestations om van en naar diskettes te lezen en te schrijven, printers om papieren pagina's te bedrukken en modems om draadloze communicatie en locatiebepaling door middel van triangulatie mogelijk te maken.