-
CobolCraft
- Server Minecraft yang ditulis dengan COBOL, mendukung Minecraft versi 1.21.4
-
Fitur
- Fitur-fitur berikut sudah diimplementasikan
- Generasi medan tanpa batas dan pemuatan chunk dinamis
- Penyimpanan data world dan pemain ke disk
- Dukungan format file Minecraft (mengimpor world yang sudah ada)
- Multiplayer yang mendukung hingga 10 pemain secara bersamaan
- Ping/status server (ditampilkan online di daftar server)
- Menghancurkan dan menempatkan blok
- Interaksi blok (klik kanan, misalnya membuka pintu)
- Inventaris pemain (terbatas pada mode kreatif)
- Chat
- Perintah (di dalam game dan melalui konsol interaktif)
- Konfigurasi melalui
server.properties
- Whitelist (persisten; disimpan di
whitelist.json)
- Blok dengan banyak state, orientasi, dan interaksi memerlukan banyak kode khusus dan berada di luar cakupan proyek ini
- Beberapa blok yang didukung: obor, slab, tangga, pilar berotasi, tombol, pintu, trapdoor, ranjang
-
Cara penggunaan
- Dikembangkan menggunakan GnuCOBOL dan dirancang untuk berjalan di Linux
- Dukungan untuk sistem operasi lain seperti Windows belum diuji, tetapi deployment yang independen platform dimungkinkan dengan Docker
- Untuk deployment di Linux, prasyarat berikut harus terpasang
cobc, make, g++, zlib, curl, versi Java terbaru
- Jalankan
make untuk build, lalu make run untuk memulai server di port 25565
- Saat menggunakan Docker:
- Bisa menarik image dari Docker Hub atau membangunnya sendiri
- Saat menjalankan container Docker, dapat dikonfigurasi agar bisa diakses dari luar
-
Mengapa?
- Ada banyak rumor dan stigma tentang COBOL, jadi proyek ini dibuat untuk mempelajari bahasa ini lebih jauh
- COBOL cocok untuk aplikasi bisnis, tetapi kurang cocok untuk manipulasi data tingkat rendah yang dibutuhkan oleh protokol Minecraft
- Namun, saya tidak menyerah sebelum berhasil membuat prototipe yang berfungsi
- Kinerja dicapai melalui encoding dan decoding data
-
Gambaran program
-
Komponen sumber
- Titik masuk program adalah
main.cob, dan sumber COBOL lainnya berada di direktori src/
- Soket TCP dikelola dengan library soket
CBL_GC_SOCKET
-
Blob paket
- Menggunakan data jaringan yang ditangkap melalui Wireshark, dan berada di direktori
blobs/
-
Ekstraksi data
- Banyak data dapat diekstrak dari aplikasi server dan client Minecraft resmi
Makefile CobolCraft mencakup target untuk mengunduh file .jar dan mengekstrak data JSON
-
Pemberitahuan hukum
- Proyek ini berada di bawah lisensi MIT, dan library pihak ketiga CBL_GC_SOCKET berada di bawah lisensi LGPL v3
- "Minecraft" adalah merek dagang Mojang Synergies AB, dan CobolCraft tidak berafiliasi dengan maupun disetujui oleh Mojang
1 komentar
Komentar Hacker News
Ada banyak rumor dan stigma buruk tentang COBOL. Untuk memahaminya, ingin merasakan COBOL lewat sebuah proyek. Ingin tahu wawasan yang didapat orang baru saat menggunakan COBOL
Proyek kecil yang ditulis dengan bahasa sederhana terasa mengesankan. Sebaliknya, proyek yang ditulis dengan bahasa modern seperti Rust terasa tidak efisien
Berhenti menggunakan COBOL sejak 1978. Tidak ingin melihat kode ini lagi
Kode COBOL mudah dipahami bagi orang dengan latar belakang bahasa prosedural. Mengingatkan pada server game yang ditulis dengan VB 20 tahun lalu
Kode COBOL sangat mudah dibaca. Dibandingkan bahasa modern, lebih mudah dipahami
Saat masih SMA di sebuah kota kecil di Pakistan, belajar COBOL. Pernah mengerjakan proyek yang mensimulasikan laporan keuangan. Tidak mengerti stigma buruk terhadap COBOL
COBOL terlihat seperti bahasa yang keren. Kodenya tertata rapi
Empat puluh tahun lagi, para eksekutif di seluruh dunia akan berkata, "Server Minecraft COBOL telah menghilang"
Tidak jelas apakah server Minecraft COBOL mendukung redstone. Tidak disebutkan di README, dan di kode hanya ada penyebutan obor redstone saja