Files
Darto KLoning 0a22196ea6 Initial import
2026-06-20 20:58:13 +07:00

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":""}'}}}}]