42 lines
3.3 KiB
MCFunction
42 lines
3.3 KiB
MCFunction
# Objective untuk menampilkan jumlah item yang dipindahkan dari slot 26.
|
|
# Aman walaupun dijalankan berulang; jika objective sudah ada, command ini hanya gagal diam-diam.
|
|
scoreboard objectives add trashslot_count dummy
|
|
scoreboard objectives add trashslot_success dummy
|
|
|
|
# Tandai player yang sedang berada di mode bebas.
|
|
# Tag ini dipakai untuk mendeteksi transisi dari creative/spectator ke survival/adventure.
|
|
tag @a[gamemode=creative] add ts_free_mode
|
|
tag @a[gamemode=spectator] add ts_free_mode
|
|
tag @a[gamemode=creative] remove ts_transition_checked
|
|
tag @a[gamemode=spectator] remove ts_transition_checked
|
|
tag @a[gamemode=creative] remove ts_slot26_protected
|
|
tag @a[gamemode=spectator] remove ts_slot26_protected
|
|
|
|
# Hapus hanya icon Trash Slot saat player masuk creative/spectator.
|
|
# Jangan pakai item replace inventory.26 with air tanpa kondisi, karena itu akan
|
|
# menghapus item apa pun yang ditaruh player di slot 26 setiap tick.
|
|
clear @a[gamemode=creative] minecraft:barrier{CustomModelData:87274} 1
|
|
clear @a[gamemode=spectator] minecraft:barrier{CustomModelData:87274} 1
|
|
|
|
# Bersihkan item trash lama dari player survival/adventure.
|
|
clear @a[gamemode=!creative,gamemode=!spectator] minecraft:barrier{CustomModelData:87274}
|
|
|
|
# Saat baru pindah dari creative/spectator ke survival/adventure, selamatkan item asli di slot 26 satu kali saja.
|
|
# NBT Slot 35b = command slot inventory.26.
|
|
execute as @a[gamemode=!creative,gamemode=!spectator,tag=ts_free_mode,tag=!ts_transition_checked] at @s if predicate trashslot:allowed_dimension if data entity @s Inventory[{Slot:35b}] unless data entity @s Inventory[{Slot:35b,id:"minecraft:barrier",tag:{CustomModelData:87274}}] run function trashslot:save_slot_26
|
|
tag @a[gamemode=!creative,gamemode=!spectator,tag=ts_free_mode,tag=!ts_transition_checked] add ts_transition_checked
|
|
tag @a[gamemode=!creative,gamemode=!spectator,tag=ts_free_mode,tag=ts_transition_checked] remove ts_free_mode
|
|
|
|
# Jika player survival/adventure memang membuang item ke slot 26 saat Trash Slot aktif, hapus diam-diam.
|
|
# Ini tidak menampilkan actionbar, dan tidak menjalankan fungsi pemindahan item.
|
|
execute as @a[gamemode=!creative,gamemode=!spectator,tag=!ts_slot26_protected] at @s if predicate trashslot:allowed_dimension if data entity @s Inventory[{Slot:35b}] unless data entity @s Inventory[{Slot:35b,id:"minecraft:barrier",tag:{CustomModelData:87274}}] run item replace entity @s inventory.26 with air
|
|
|
|
# Jika sebelumnya slot 26 dilindungi karena inventory penuh, lepaskan proteksi setelah slot 26 kosong.
|
|
execute as @a[gamemode=!creative,gamemode=!spectator,tag=ts_slot26_protected] unless data entity @s Inventory[{Slot:35b}] run tag @s remove ts_slot26_protected
|
|
|
|
# Pasang trash slot hanya kalau slot 26 kosong, supaya item asli tidak tertimpa.
|
|
execute as @a[gamemode=!creative,gamemode=!spectator] at @s if predicate trashslot:allowed_dimension unless data entity @s Inventory[{Slot:35b}] run item replace entity @s inventory.26 with minecraft:barrier{CustomModelData:87274,HideFlags:32,display:{Name:'{"text":"Trash Slot","color":"dark_red","italic":false}',Lore:['{"text":"ZombiiAttack","color":"gray","italic":true}']}}
|
|
|
|
# Hancurkan item trash yang terlempar ke world jika berupa item icon Trash Slot.
|
|
kill @e[type=item,nbt={Item:{tag:{display:{Name:'{"extra":[{"italic":false,"color":"dark_red","text":"Trash Slot"}],"text":""}'}}}}]
|