Kawaiiverse StudioDreams · Games · Infinite Worlds

🟩 BedrockCommandsMenengah3 menit baca

Membuat Sistem Economy (Uang, Toko, Jual-Beli) di Minecraft Bedrock

Membuat sistem economy di Minecraft Bedrock tanpa add-on menggunakan scoreboard, NPC toko, transfer uang antar pemain, gaji per menit, dan menjual item, serta alternatif dengan Script API.

Oleh KawaiiVerse Studio · Diperbarui

Server survival atau dunia RPG jadi lebih seru dengan uang: pemain bisa menjual hasil tambang, membeli perlengkapan, dan bertransaksi dengan pemain lain. Di Bedrock, sistem ini bisa dibuat tanpa add-on, cukup dengan scoreboard, tag, dan NPC. Pastikan kamu sudah memahami scoreboard sebelum membaca panduan ini.

1. Menyiapkan mata uang

mcfunction
/scoreboard objectives add uang dummy "§6Koin"
/scoreboard objectives setdisplay sidebar uang

Agar setiap pemain baru langsung punya saldo 0, jalankan baris ini setiap tick lewat repeating command block atau function di tick.json:

mcfunction
scoreboard players add @a uang 0

Untuk memberi modal awal 100 koin kepada pemain baru, gunakan tag sebagai penanda:

mcfunction
scoreboard players add @a[tag=!sudah_modal] uang 100
tag @a[tag=!sudah_modal] add sudah_modal

2. Pola transaksi yang aman

Semua transaksi memakai pola yang sama:

  1. Tandai pemain yang memenuhi syarat dengan tag.
  2. Jalankan semua aksi hanya untuk pemain bertag.
  3. Hapus tag.

Pola ini mencegah bug klasik seperti pemain mendapat barang padahal uangnya kurang, atau uang terpotong padahal barang gagal diberikan.

3. Toko beli (NPC)

Buat NPC (lihat cara membuat NPC) dan tambahkan tombol Beli Pedang Besi — 150 koin:

mcfunction
/tag @initiator[scores={uang=150..}] add beli
/give @a[tag=beli] iron_sword 1
/scoreboard players remove @a[tag=beli] uang 150
/playsound random.levelup @a[tag=beli]
/tellraw @initiator[tag=!beli] {"rawtext":[{"text":"§cKoinmu belum cukup (butuh 150)."}]}
/tag @a remove beli

4. Toko jual

Menjual item lebih rumit karena kita harus memastikan pemain benar-benar punya barangnya. Gunakan argumen hasitem pada selector:

mcfunction
/tag @initiator[hasitem={item=diamond,quantity=1..}] add jual
/clear @a[tag=jual] diamond 0 1
/scoreboard players add @a[tag=jual] uang 80
/tellraw @a[tag=jual] {"rawtext":[{"text":"§aTerjual 1 diamond (+80 koin)"}]}
/tellraw @initiator[tag=!jual] {"rawtext":[{"text":"§cKamu tidak punya diamond."}]}
/tag @a remove jual

Pada /clear, angka 0 adalah data value item dan 1 adalah jumlah yang dihapus. Untuk tombol Jual Semua, ubah logikanya menjadi pengulangan: jalankan blok di atas beberapa kali, atau gunakan Script API (lihat bagian 7).

5. Transfer uang antar pemain

Tanpa script, transfer antar pemain paling mudah dibuat dengan sistem "titip" di NPC bank. Contoh sederhana untuk mengirim 10 koin ke pemain yang berdiri di pelat tekanan tertentu:

mcfunction
/tag @initiator[scores={uang=10..}] add kirim
/scoreboard players remove @a[tag=kirim] uang 10
/execute if entity @a[tag=kirim] run scoreboard players add @p[x=100,y=64,z=100,r=1,tag=!kirim] uang 10
/tag @a remove kirim

Untuk transfer dengan nama pemain yang diketik bebas, gunakan Script API dengan form, karena command tidak bisa membaca input teks.

6. Gaji per menit

Berikan 5 koin setiap menit bermain untuk mendorong pemain tetap aktif:

mcfunction
# function sistem/gaji, dipanggil setiap tick
scoreboard players add @a gaji_tick 1
scoreboard players add @a[scores={gaji_tick=1200..}] uang 5
scoreboard players set @a[scores={gaji_tick=1200..}] gaji_tick 0

7. Alternatif: Script API

Untuk toko dengan menu (form), jual semua item, atau transfer dengan nama pemain, Script API jauh lebih fleksibel. Contoh membaca dan menambah skor dengan @minecraft/server:

javascript
import { world } from "@minecraft/server";

function tambahUang(player, jumlah) {
  const uang = world.scoreboard.getObjective("uang");
  uang.addScore(player, jumlah);
}

world.afterEvents.entityDie.subscribe(({ deadEntity, damageSource }) => {
  const pembunuh = damageSource.damagingEntity;
  if (pembunuh?.typeId === "minecraft:player" && deadEntity.typeId === "minecraft:zombie") {
    tambahUang(pembunuh, 2);
  }
});

Menu toko berbentuk tombol bisa dibuat dengan modul @minecraft/server-ui (ActionFormData). Ingat untuk menambahkan dependency modul tersebut di manifest.json.

8. Menjaga keseimbangan ekonomi

  • Batasi sumber uang. Jika menjual item terlalu menguntungkan (misalnya hasil farm otomatis), harga akan cepat tidak berarti. Turunkan harga jual barang yang mudah didapat.
  • Buat pengeluaran. Biaya teleport, sewa lahan, atau item kosmetik membantu menyerap uang dari ekonomi.
  • Catat harga di satu tempat. Simpan harga di fake player (misalnya #harga_pedang) agar mudah diubah tanpa mengedit setiap tombol NPC.
  • Jangan beri pemain biasa akses command. Satu operator yang ceroboh bisa merusak ekonomi dengan /scoreboard players add.

Dengan sistem ini, servermu sudah punya ekonomi dasar. Untuk server Java, lihat panduan economy di server Java.

Bacaan lanjut