Berusaha untuk mulai mengajarkan pemrograman anak dengan edisi saku Minecraft


Di halaman, musim gugur dan anak laki-laki lebih sering tetap di rumah, dimakamkan di telepon atau tablet, bereaksi buruk terhadap rangsangan eksternal. Saya sedih. Saya sendiri mulai memprogram, menurut saya, dari kenyataan bahwa game-game tersebut masuk ke komputer saya yang pertama, BK 0010-01 pada kaset, tetapi tape recorder tidak pergi. Saat menambang tape recorder dengan output linear yang sesuai, saya berhasil mencoba Basic, terima kasih kepada ayah saya untuk pelajaran pertama. Jadi, ketika saya bisa memuat game grafis pertama dengan deritan, saya melihatnya tidak lagi seperti apa yang akhirnya saya mainkan, tetapi terpesona memikirkan bagaimana membuat saya lebih buruk. Putranya, dalam usia 8 tahun, telah lama melahap dunia video game dan YouTube, jadi sepertinya dia tidak akan membuat kesan memulai pemrograman dengan bunyi gemetar pada dinamika bawaan.


Saya telah menemukan artikel tentang pemrograman dengan Minecraft di Python untuk waktu yang lama dan kemudian saya menyadari bahwa sudah waktunya. Minecraft adalah salah satu permainan favoritnya dan saya pikir akan lebih baik untuk memulai dengan wilayah yang berkembang dengan baik ini.


Namun, setelah menjalankan informasi yang tersedia di domain publik, saya menyadari bahwa semuanya sangat sulit. Menemukan buku-buku " Pemrograman dengan Minecraft. Ciptakan dunia Anda dengan Python " pada tahun 2017 dan " Minecraft. Programkan dunia Anda dengan Python " pada tahun 2018 masing-masing dimulai dengan pemasangan server Spigot dan Bukkit. Ternyata klien seluler yang ada di android / iphone, mereka juga edisi saku, mereka juga edisi dasar, tidak bekerja dengan server ini. Anda perlu membeli klien untuk Windows / Mac, yang merusak seluruh usaha. Pertama, itu tidak akan lagi menjadi lingkungan "asli" yang akrab bagi putranya. Kedua, untuk mentransfer demi pemrograman ke lingkungan lain akan menunjukkan kelemahan, mungkin, dari pendekatan, mereka mengatakan permainan terpisah, program terpisah. Ketiga, sang anak mungkin ingin menunjukkan eksperimennya kepada teman-teman, dan itu adalah versi seluler yang populer di kalangan teman-teman. Tidak mungkin, saya memutuskan, karena mainan seluler ini dapat terhubung ke server, tidak semuanya hilang. Dan saya mulai mencari.


Pada hari pertama, krom saya penuh dengan tab, dan kekacauan berkuasa di kepala saya.
Yang pertama adalah server Nukkit open-source, di mana game di android saya terhubung dengan cukup sukses. Satu-satunya titik di sini adalah bahwa kita memerlukan versi gim saat ini (1,12 untuk hari ini), jadi saya perlu memperbaruinya terlebih dahulu. Server memiliki banyak plugin, tetapi plugin yang cocok untuk pemrograman, seperti yang dijelaskan dalam buku, tidak ditemukan.


Benar, PyPlugins ditemukan , yang tampaknya meluncurkan Jython, versi python di java. Tapi, seperti yang saya pahami, jython memilih versi bahasa python 2.7. Sisihkan opsi ini sebagai tidak sportif.


Mari kita pergi di sisi lain, tetapi bagaimana penulis buku berarti menghubungkan python ke server? Setelah mempelajari bahan-bahan tambahan untuk buku dengan hati-hati, karena tersedia secara bebas, saya menemukan plugin RaspberryJuice , yang disembunyikan dengan hati-hati di direktori plugins (bukan sepatah kata pun dalam buku itu), kemudian membuka soket jaringan untuk mengantisipasi perintah. Dan pustaka mcpi python mengirimkan perintah . Terima kasih kepada penulis, semuanya open source. Saya sedikit terganggu karena komit terakhir adalah 2-4 tahun yang lalu.


Tetapi bagaimana menghubungkan RaspberryJuice ke Nukkit? Dan di sini dicari, jangan tertawa, Pokkit adalah plugin Nukkit untuk menjalankan plugin untuk Bukkit. Saya tidak tahu mengapa namanya begitu, tetapi itu menambahkan saya satu jam ekstra untuk mencari, karena pada awalnya saya bingung. Tampaknya sekarang semua bagian teka-teki sudah ada, tetapi peluncuran mengungkapkan kesalahan: java.lang.NoSuchFieldError: GOLD_SWORD . Ini memalukan, karena dalam deskripsi Pokkit tercatat bahwa RaspberryJuice ada dalam daftar yang didukung. Mengeluarkan bug . Anehnya, jawabannya datang dengan cepat - plugin sudah usang. β€œSemuanya berkarat di sini,” frasa dari film favorit saya muncul di benak saya. Setelah klarifikasi, penulis dengan ramah menjelaskan di mana mendapatkan API modern untuk bukkit , dan kemudian "kami benar-benar entah bagaimana." Plugin usang Forked, cukup cepat menggantikan semua metode yang menghilang dalam versi API saat ini, menemukan pengganti untuk mereka. Ternyata sesuatu seperti world.getBlockTypeIdAt(loc) berubah menjadi world.getBlockAt(loc).getType().getId() . Namun, satu titik masih signifikan: sebelumnya memungkinkan untuk membuat pelangi dari blok yang sama (seperti dalam contoh, block.WOOL ), dicat dengan warna berbeda. Sekarang tidak mungkin untuk mengecat ulang blok, Anda harus mengambil blok berwarna-warni pada awalnya ( Material.RED_WOOL , Material.BLUE_CARPET ). Mengeluarkan permintaan tarik dan menemukan bahwa ada dua permintaan tarik lainnya, keduanya baru. Lain kali perlu diperiksa dulu ...


Jadi, instruksi tentang cara meluncurkan piramida ini dengan cepat dari Nukkit-Pokkit-RaspberryJuice-mcpi:


  1. Kami mengambil server yang sesuai, di mana ada akses dari ponsel Minecraft Anda. Misalnya, komputer rumah dengan port terbuka 19132 (default). Ini lebih mudah bagi saya di linux, tetapi setiap OS dengan lingkungan java runtime cocok.
  2. Server Nukkit Unduh JAR yang disarankan dari tautan "Unduhan" atau buat sendiri dari sumbernya ( mvn clean package ). Kami memasukkan direktori yang terpisah dan menjalankan java -jar nukkit-1.0-SNAPSHOT.jar .
  3. Plugin Pokkit . Unduh JAR yang disarankan dari tautan "Unduh dan gunakan" atau buat sendiri dari sumbernya ( mvn clean package ). Kami memasukkan direktori plugins , yang dibentuk setelah langkah 2. Stop dan restart server, seperti pada langkah 2.
  4. Plugin RaspberryJuice dengan tambalan saya . Unduh JAR yang direkomendasikan dari tautan atau kumpulkan milik Anda dari sumber (cabang pocket-edition , mvn clean package ). Kami memasukkan direktori plugins/Pokkit/bukkitPlugins/ , yang dibentuk setelah langkah 3. Kami berhenti dan mulai ulang server.
  5. Kami menghubungkan minecraft seluler ke server: Play - Server - Server lain - tambahkan yang baru atau edit yang sudah ada: "nama server" - sesuai selera Anda, "alamat server" - alamat IP server dari langkah 1, "port" 19132, jika tidak diubah dalam konfigurasi . Simpan dan hubungkan.
  6. Instal python 3 dan pustaka pip3 install --user py3minepi : pip3 install --user py3minepi . Setelah itu, Anda dapat menjalankan contoh-contoh dari buku 1 dan 2 hanya dengan memasukkan python3 Adventure3/dice.py

UPD: pada langkah 6, Anda perlu menginstal perpustakaan mcpi seperti ini: git clone https://github.com/py3minepi/py3minepi.git && cd py3minepi && pip3 install --user . (pada titik akhir dibutuhkan). Ini disebabkan oleh fakta bahwa pembuat plugin memiliki versi python 3.4 terbaru.


Anda dapat mencoba tanpa python (langkah 6) dengan menghubungkan ke plugin dengan netcat biasa: nc localhost 19132 dan memasukkan perintah secara manual:


  • player.getTile() - koordinat pemain akan dikembalikan dalam format x, y, z, di mana sumbu y diarahkan ke langit dan bidang xz sejajar dengan bumi. Saya mendapat 75,-5,-5 ,
  • world.setBlock(75,-6,-5,3) - mengatur blok tanah di bawah pemain,
  • world.spawnEntity(75,-4,-5,93) - menelurkan ayam di atas pemain.

Eksperimen saya dapat dilihat pada gambar awal posting ini.


Jika hujan atau malam turun dan sulit dilihat, masukkan perintah yang sudah time set 0 dan weather clear di konsol server.


Itu saja. Sangat bagus bahwa ada sumber terbuka dan sekarang sangat sederhana, dengan mencari di domain publik, dalam beberapa malam untuk membangun piramida program kerja seperti itu. Saya terutama ingin memperhatikan keramahan dan jawaban yang hampir instan dalam obrolan banyak proyek.


Saya juga menemukan video yang luar biasa ini tentang merender wadah server buruh pelabuhan di dunia Minecraft:



Wadah putra tidak mungkin menarik, tetapi berkedip dengan LED sebagai respons terhadap peralihan sakelar kartun adalah masalahnya. Saya akan dengan senang hati menyarankan apa lagi yang akan muncul dengan yang tidak biasa untuk pengajaran pemrograman.

Source: https://habr.com/ru/post/id472614/


All Articles