Saya mencoba membuat blok perintah yang memunculkan item di depan Anda jika Anda memegang item dengan nama tertentu. Saya punya dua skrip yang berfungsi ini;
/testfor @p[r=10] {Inventory:[{tag:{display:{Name:"Item Name"}}}]}
/testfor @p[r=10] {SelectedItemSlot:0,Inventory:[{Slot:0b,id:"minecraft:diamond_sword"}]}
tetapi saya tidak bisa menyatukannya. Blok seharusnya hanya mencari item di slot aktif.
Anda sebenarnya bisa menggabungkan ini ke dalam satu perintah. Sebelum 1.13, ini akan terlihat seperti ini:
/testfor @p[r=10] {SelectedItem:{id:"minecraft:diamond_sword",tag:{display:{Name:"Item Name"}}}}
Ini akan menghasilkan output jika pemain memegang pedang berlian bernama di slot yang dipilih.
Namun, perintah di atas telah sepenuhnya tidak digunakan lagi di 1.13. testfor
sekarang hanya untuk Bedrock, dan pemilih [r=]
telah diubah. Anda juga tidak dapat melakukan apa-apa dengan testfor ini, yang dilakukannya hanyalah memberikan output redstone. Versi yang lebih baik dan diperbarui untuk Java Edition 1.13 akan menjadi sesuatu di sepanjang garis berikut:
/execute at @p[distance=..10, nbt={SelectedItem:{id:"minecraft:diamond_sword",tag:{display:{Name:"Item Name"}}}}] run <your item spawning command>
Perintah ini mengeksekusi perintah pemijahan item Anda & pada posisi pemain dalam 10 blok yang cocok dengan NBT SelectedItem.
Untuk menggabungkan dua dataTag, Anda perlu memindahkan senyawa tag
dari perintah pertama ke dalam senyawa item inventaris di perintah kedua:
/testfor @p[r=10] {SelectedItemSlot:0,Inventory:[{Slot:0b,id:"minecraft:diamond_sword",tag:{display:{Name:"Item Name"}}}]}
Catatan: Ini hanya akan menguji benar jika item berada di slot 0 dan juga item yang dipilih.
Anda dapat menggunakan tag SelectedItem tag sebagai pengganti tag SelectedItemSlot. Ini akan memungkinkan Anda untuk menargetkan pemain mana pun yang saat ini memiliki item tertentu yang dipilih, tidak peduli di slot mana item itu berada:
/testfor @p[r=10] {SelectedItem:{id:"minecraft:diamond_sword",tag:{display:{Name:"Item Name"}}}}
Mulai 1.9, Anda dapat menggunakan scoreboard add tag command untuk menandai pemain yang memegang item tertentu.
scoreboard players tag @a add <tagName> {SelectedItem:{id:"minecraft:diamond_sword",tag:{display:{Name:"Item Name"}}}}
Ini memungkinkan Anda untuk menargetkan pemain dalam perintah lain. Mari kita buat pemain dengan pedang yang dipilih menyapa:
/execute @a[tag=<tagName>] ~ ~ ~ say hello
Anda bisa menggunakan tag ini dalam perintah pemanggilan item.
Kemudian untuk menghapus tag dari semua pemain:
scoreboard players tag @a remove <tagName>
Jika Anda ingin menguji pemain mana pun yang memegang barang apa pun dengan nama yang benar, cukup hilangkan bagian id dari dataTag:
/testfor @p[r=10] {SelectedItem:{tag:{display:{Name:"Item Name"}}}}
/testfor @p[r=10] {SelectedItem:{id:"minecraft:diamond_sword",tag:{display:{Name:"Item Name"}}}}
Akan bekerja tetapi cara yang lebih baik untuk melakukannya adalah dengan menggunakan tujuan papan skor dengan statistik ex-
/scoreboard objectives add ItemHold stat.useItem.minecraft.diamond.sword
Saya telah mengujinya dan berhasil jadi cobalah itu ...