Skip to main content

Pythonization of ComputerCraft Minecraft mod. Write Python instead Lua!

Project description

Pythonized CC Tweaked (ComputerCraft) API

Warning: CPython can't build safe sandboxes for arbitrary untrusted code (read more). Never use code in this repo if you don't trust your players!

  1. Download and install wheel from github releases

    pip install computercraft-*.whl
    
  2. Enable localhost in mod server config

    In case of singleplayer it's located inside your saves folder. In case of multiplayer check your server folder.

    Edit computercraft-server.toml

    [[http.rules]]
    	host = "127.0.0.0/8"
    	action = "allow"  # change here deny to allow
    
  3. Start python server:

    python -m computercraft.server
    
  4. In minecraft, open up any computer and type:

    wget http://127.0.0.1:8080/ py
    py
    

    Now you have python REPL in computercraft! To quit REPL type exit() and press enter.

py is short Lua program that interacts with the server. cc module contains almost everything as is in ComputerCraft documentation:

from cc import disk, os

disk.eject('right')
print(os.getComputerLabel())

Opening a file:

from cc import fs

with fs.open('filename', 'r') as f:
    for line in f:
        print(line)

Waiting for event (os.captureEvent instead os.pullEvent):

from cc import os

timer_id = os.startTimer(2)
for e in os.captureEvent('timer'):
    if e[0] == timer_id:
        print('Timer reached')
        break

Using modems:

from cc import peripheral

modem = peripheral.wrap('back')
listen_channel = 5
# this automatically opens and closes modem on listen_channel
for msg in modem.receive(listen_channel):
    print(repr(msg))
    if msg.content == 'stop':
        break
    else:
        modem.transmit(msg.reply_channel, listen_channel, msg.content)

Using parallel:

from cc import parallel, os

def fn():
    os.sleep(2)
    print('done')

parallel.waitForAll(fn, fn, fn)

Importing in-game files as modules:

from cc import import_file

p = import_file('/disk/program.py')  # absolute
m = import_file('lib.py', __file__)  # relative to current file

More examples can be found in repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

computercraft-0.3.0-py3-none-any.whl (29.3 kB view details)

Uploaded Python 3

File details

Details for the file computercraft-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: computercraft-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 29.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.2

File hashes

Hashes for computercraft-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ceebf261dbc3c6d96049261acbfa184b899e787b8ae0fca2025508fbb447fde
MD5 7ffc929d0e445515e9b2b9a9aa6ea8aa
BLAKE2b-256 32bda188c1067e2e7306778a04399c1aaad0591a12e3dbd9ce1ae49097187734

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page