Global Ignoring Tag (***)

เกี่ยวกับ

แบบแผนนี้เป็นวิธีการสำหรับดาต้าแพ็คในการสื่อสารกับดาต้าแพ็คอื่นๆ โดยระบุ Tag entity ที่ดาต้าแพ็คอื่นๆสามารถใช้หากันได้ ข้อนี้จะใช้งานหนักที่สุดเพื่อป้องกันเหตุไม่คาดคิดของดาต้าแพ็คอื่นๆจากการ /kill หรือ ลบ entity ที่ summon เพื่อใช้งานพิเศษบางอย่าง เพราะว่าบางกรณีดาต้าแพ็คของคนๆนึงมีจังหวะที่ไม่ต้องการให้เกิดการยุ้งกับเอ็นทิตี้ดังกล่าว จึงต้องใช้แท็กนี้กันเอาไว้ เช่นในกรณีที่ ดาต้าแพ็คนึงสั่งซัมม่อน Armor stand ด้วย แท็กอะไรสักอย่าง เพื่อตรวจเช็คว่าบล็อคนั้นคือบล็อคอะไร แต่แล้วจู่ๆดาต้าแพ็คของอีกคนดันทำงาน /kill พอดีโดย สิ่งที่จะเกิดขึ้นคือ มันยังไม่ทันตรวจบล็อคดังกล่าวก็โดนดาต้าแพ็คของอีกคน /kill ไปสะก่อน บัคจึงบังเกิดขึ้นนั่นเอง

ในตอนนี้มีแท็ก ยกเว้น 4 แท็ก ดังนี้: global.ignore, global.ignore.pos, global.ignore.gui, global.ignore.kill

1. global.ignore.kill

เอ็นทิตี้ใดๆทีมีเจ้าแท็กนี้อยู่ จะต้องไม่ ถูก ฆ่า โดยดาต้าแพ็คอื่นๆ แต่ไม่ได้จำกัดใช้แค่ /kill นะ

execute as @e[type=creeper, tag=!global.ignore, tag=!global.ignore.kill] run kill @s
kill @e[type=creeper, tag=!global.ignore, tag=!global.ignore.kill]

2. global.ignore.gui

เอ็นทิตี้ใดๆที่มีแท็กนี้ จะต้องไม่ แสดงผลเอฟเฟกต์ใดๆที่รอบๆเอ็นทิตี้นี้เลย แต่ไม่ได้จำกัดใช้แค่ /title นะ

execute as @a[tag=!global.ignore.gui] at @s run title @s actionbar [{"text": "Hello, World!", "color": "green"}]

ข้อนี้ยกเว้นกับคำสั่ง /playsound, /tellraw และ /particle

3. global.ignore.pos

เอ็นทิตี้ใดๆที่มีแท็กนี้ จะต้องไม่ ถูกเคลื่อนย้าย จากจุดที่มันอยู่แม้แต่นิดเดียว แต่ไม่ได้จำกัดใช้แค่ /tp, /teleport นะ

execute as @e[type=witch, tag=!global.ignore, tag=!global.ignore.pos] at @s run tp @s ~ ~0.1 ~
tp @e[type=area_effect_cloud, tag=!global.ignore, tag=!global.ignore.pos] ~ ~0.1 ~

4. global.ignore

เอ็นทิตี้ใดๆที่มีแท็กนี้ (รวมไปถึงผู้เล่นด้วย) จะต้องไม่ถูก execute @ selector เลย แท็กนี้คิดสะว่ามันเป็นแท็กรวมของการ ignore ทั้งหมดข้างต้น

execute as @e[tag=!global.ignore] at @s run function namespace:internal/logic/function

แท็กนี้ไม่สามารถใช้กับ selector สำหรับผู้เล่นเท่านั้นได้ (@a, @e[type=player], @p, เป็นต้น.)

หมายเหตุ

แบบแผนนี้ใช้เฉพาะในกรณีที่ฟังก์ชั่นจะมีการ Modify NBT ของเอ็นทิตี้ที่ไม่รู้จัก หากคุณ Modify NBT ของเอ็นทิตี้ที่คุณรู้จัก (เช่น เอ็นทิตี้ที่มีแท็กกำหนดอยู่) คุณไม่ต้องใช้วิธีนี้

execute as @e[tag=est.modify_et] run data modify entity @s <...>
execute as @e[type=zombie,tag=!global.ignore] run data modify entity @s <...>

พูดง่ายๆก็คือถ้า selector modify แบบมีแท็กระบุชัดเจนก็ไม่ต้องระบุ ignore

หากคุณไม่ต้องการให้ดาต้าแพ็คของคนอื่นมายุ่งกับ some tag ก็ใส่แบบนี้ได้

summon armor_stand ~ ~ ~ {Tags:['some.tag','global.ignore','global.ignore.kill','global.ignore.gui','global.ignore.pos']}

ในกรณีที่ เอ็นทิตี้ดังกล่าวมีการใช้งานแล้วจบภายใน 1 ติ๊ก หรือเอ็นทิตี้มีการคงอยู่ในโลกแค่ 1 ติ๊ก ก็ไม่จำเป็นต้องใส่ก็ได้

summon area_effect_cloud ~ ~ ~ {Tags: ['test.aec'], Age: 0, Duration: 1}
execute at @s positioned ~ ~ ~ run summon area_effect_cloud ~ ~ ~ {Tags: ['test.aec.rd','global.ignore','global.ignore.pos'], Age: 0, Duration: 1}

แต่ในกรณีที่มีการรันตลอด อยู่ 1 ติ๊กแล้วตายวนซ้ำหลายติ๊ก คุณอาจจะใส่ไว้ได้หากคุณไม่สบายใจว่าในเสียวมิลลิวินาทีของ 1 ติ๊กจะเกิดการขัดจังหวะขึ้น