محتوا مقاله
دستورات (Commands) که با نامهای کنسول کامند یا اسلش کامند هم شناخته میشن، یه مکانیزم توی بازی هستن که وقتی بهصورت متنی وارد میشن یا توسط بلاکها یا بعضی موجودات خاص فعال میشن، اقدامهای مشخصی رو اجرا میکنن.
کاربرد
در کلاینت، دستورها از طریق پنجره چت وارد میشن. این پنجره با فشردن کلید T یا در Bedrock Edition با / یا D-pad راست باز میشه. استفاده از کلید / خودش اسلش ابتداییِ لازم برای دستورها رو هم وارد میکنه، برای همین یه میانبر مفید حساب میشه. با کلیدهای ↑ و ↓ یا در Bedrock Edition با D-pad بالا و پایین میتونی متنهای قبلی رو ببینی، از جمله همهٔ دستورهایی که قبلاً اجرا شدن.
وقتی مکاننما روی جایی باشه که مربوط به بعضی نوعهای آرگومان هست(مثل entity ID)،یه لیست از مقادیر قابل استفاده بالای کادر متن ظاهر میشه.اگه آرگومان از قبل چندتا کاراکتر داشته باشه،لیست فقط گزینههایی رو نشون میدهکه با متن تایپشده همخوانی دارن.وقتی موقع وارد کردن دستور، کلید Tab ↹ رو بزنی،بین دستورها یا آرگومانهای ممکن جابجا میشهو میتونی ازش برای تکمیل خودکار استفاده کنی.دستورها همچنین میتونن توی کنسول سرور چندنفره هم وارد بشن،ولی توی این حالت دیگه / قبلشون نوشته نمیشه.وقتی صاحب سرور دستورها رو به این شکل اجرا میکنه،معمولاً بهش میگن «ghosting».
دستورها داخل command block میتونن با / شروع بشن، اما این کار الزامی نیست.
دستورها میتونن به روشهای زیر اجرا بشن:
- توسط بازیکن و از داخل چت وارد بشن.
- توسط command block یا ماینکارتِ command block اجرا بشن.
- در سرور اختصاصی، از طریق کنسول وارد بشن.
- داخل فانکشنها، در data pack (فقط Java Edition) یا behavior pack (فقط Bedrock Edition).
- با کلیک روی یه کامپوننت متنی که اکشن "run_command" داره (فقط Java Edition).
- به درخواست یه سرور WebSocket که به کلاینت وصل شده (فقط Bedrock Edition).
- با کلیک روی دکمهٔ اکشن یک دیالوگ (فقط Java Edition).
- از طریق دیالوگ NPC (فقط Bedrock Edition).
- داخل اسکریپتها، در behavior pack (فقط Bedrock Edition).
- داخل animation controllerها، در behavior pack (فقط Bedrock Edition).
- داخل پاسخ رویداد بلاک، در behavior pack (فقط Bedrock Edition).
- داخل پاسخ رویداد موجودیت (entity)، در behavior pack (فقط Bedrock Edition).
در Bedrock Edition 26.0 (در راه)،دستورها میتونن از طریق کلیدهای میانبر مشخص روی کیبورد و موس اجرا بشنکه بهشون command macros گفته میشه.command macroها رو میشه از بخش تنظیمات Creator فعال کرد.کلیدهای میانبر و دستورهای مربوط بهشون همپایینِ لیستِ بقیهٔ keybindها در تنظیمات قابل شخصیسازی هستن.میتونی تا ۱۰ تا macro داشته باشی.برای هرکدوم، یه دستور توی یه کادر متنی وارد میکنیو بعد توی بازی با زدن Alt + یک کلید خیلی سریع اجراش میکنی.command macroها میتونن با / شروع بشن،ولی این کار اجباری نیست.
راهنمای دستورات
ساختار دستور
در نسخه جاوا:
| ورودی | معنی |
| plain text | دقیقاً همونطور که نوشته شده واردش کن. |
| <argumentName> | نکته: خود علامتهای <> هم باید حذف و جایگزین بشن؛ فقط برای توضیح کاربرد متن هستن. |
| دکوراتور | معنی |
| [entry] | این بخش اختیاری است. |
| (entry|entry) (entry|entry|entry) و... | اجباری است. باید یکی از این گزینهها انتخاب شود. |
| [entry|entry] [entry|entry|entry] | اختیاری است. میتوان یکی از این گزینهها را انتخاب کرد. |
| سهنقطه ... | در داخل بازی، به یک دستور کامل دیگر نیاز است. در این ویکی، بعضی از بخشهای اجباری عمداً حذف شدهاند. |
برای مثال: [<size>] یعنی یک آرگومان اختیاری. [size] یعنی یک متن سادهٔ اختیاری.
برای مثال:advancement (grant|revoke) <targets> only <advancement> [<criterion>]
در این ساختار: advancement و only متن ساده هستن و باید دقیقاً همونطور وارد بشن. (grant|revoke) یعنی باید یکی از دو متن grant یا revoke رو انتخاب کنی. <targets> و <advancement> آرگومانهای اجباری هستن و باید با مقدار مناسب جایگزین بشن. [<criterion>] یک آرگومان اختیاریه.
در نسخه بدراک:
| ورودی | معنی |
| plain text | دقیقاً همانطور که نمایش داده شده وارد شود. |
| name: type | یک آرگومان است که باید با مقدار مناسب جایگزین شود. |
| command: command | به یک دستور کامل دیگر نیاز دارد. |
| plain text|plain text plain text|plain text|plain text و ... | یکی از این متنها باید دقیقاً همانطور وارد شود. |
| دکوراتور | معنی |
| <entry> | این بخش اجباری است. |
| [entry] | این بخش اختیاری است. |
| سهنقطه ... | در این ویکی، بعضی از بخشهای اجباری حذف شدهاند. |
دکوراتور <entry> معمولاً برای متن ساده استفاده نمیشود. یک متن سادهٔ اجباری نیازی به هیچ دکوراتی ندارد.
برای مثال، هم set و هم <set> هر دو نشاندهندهٔ یک متن سادهٔ اجباری هستن، اما معمولاً از شکل دوم استفاده نمیشه. <size: int> یک آرگومان اجباری است.
در هر دو نسخهٔ Java Edition و Bedrock Edition، دکوراتور [entry] یعنی اون بخش اختیاریه. بخشهایی که داخل کروشه قرار میگیرن، فقط میتونن آخرِ یک دستور بیان. میشه چندتا بخشِ کروشهدار رو پشت سر هم در انتهای دستور استفاده کرد. برای مثال، اگه آخر یک دستور [b] [c] a داشته باشیم، فقط این حالتها معتبر هستن: a، a b، و a b c.
محدودیتها
بیشتر دستورها نیاز دارن اجراکننده سطح دسترسی کافی داشته باشه. یعنی بیشتر دستورها فقط وقتی در دسترس هستن که: در دنیای تکنفره، گزینهٔ cheats فعال باشه. در سرور چندنفره، بازیکن اپراتور (OP) باشه. برای جزئیات بیشتر میتونی بخش سطح دسترسی (permission level) رو ببینی. بعضی از دستورها هم محدودیت دارن؛ مثلاً اینکه چه کسی میتونه ازشون استفاده کنه یا اینکه فقط در شرایط خاصی قابل اجرا هستن.
- None: این دستور هیچ محدودیتی نداره.
- Cheats only (فقط Bedrock Edition):این محدودیت فقط برای Bedrock Edition صدق میکنه.اگه دستور توسط سرور یا یک اسکریپت اجرا بشه،فرقی نمیکنه cheats فعال باشه یا نه، دستور در دسترسه.(دستورهایی که از کنسول، فانکشن زمانبندیشده یا ticking function اجرا میشن،بهعنوان اجرای توسط سرور حساب میشن.)اما اگه دستور به روشهای دیگه اجرا بشه،فقط وقتی در دسترسه که cheats فعال باشه.وقتی cheats غیرفعاله،این دستورها حتی اگه اجراکننده سطح دسترسی بالا داشته باشه،قابل استفاده نیستنمگر اینکه توسط سرور یا اسکریپت اجرا بشن.
- در Java Edition، فعال یا غیرفعال بودن cheats فقط روی سطح دسترسی بازیکن تأثیر میذاره. اگه اجراکننده سطح دسترسی کافی داشته باشه، میتونه دستورهای مربوطه رو اجرا کنه، فرقی نمیکنه cheats فعال باشه یا نه.
- Dedicated server only: این دستور فقط روی سرورهای اختصاصی در دسترسه.
- No dedicated server: این دستور روی سرورهای اختصاصی در دسترس نیست.
تقلبها (Cheats)
Cheats موقع ساختن یک دنیای جدید میتونن فعال بشن با گزینهٔ Allow Commands (فقط Java Edition) یا گزینهٔ Cheats (فقط Bedrock Edition). در Java Edition، گزینهٔ Allow Commands هنگام ساخت دنیای جدید فقط روی بازیکنِ دنیای تکنفره یا صاحب دنیای LAN تأثیر میذاره. اما وقتی یه دنیای LAN رو باز میکنی، گزینهٔ Allow Commands روی همهٔ بازیکنهای داخل دنیای LAN اعمال میشه.
در Java Edition، توی دنیاهای تکنفرهای که موقع ساخت، cheats فعال نشده،میشه بهصورت موقتی cheats رو فعال کرد با باز کردن جلسهٔ فعلی بازی به حالت LAN.مراحلش اینه:
Esc → Open to LAN → Allow Cheats → Start LAN World
لازم نیست واقعاً به LAN وصل باشی یا بازیکن دیگهای وارد بازی بشه. این کار دائمی نیست،ولی تا وقتی از دنیا خارج نشدی، اجازهٔ استفاده از دستورها رو میده. تغییرهایی هم که با دستورها انجام میدی (مثل آیتمهایی که spawn میکنی) داخل همون دنیا ذخیره میشن.هر بار که دوباره وارد اون دنیا میشی،میتونی این کار رو دوباره انجام بدی.
توجه داشته باش که این کارقابلیت توقف بازی (Pause) رو برای اون مدت غیرفعال میکنه.پس وقتی دنیا به LAN بازه،بهتره قبل از باز کردن منوی بازیب رو یه جای امن یا دنیا رو ریلود کنی.
برای غیرفعال کردن حالت LAN،کافیه دنیا رو دوباره بارگذاری کنی.برای اینکه cheats بهصورت دائمی فعال بشه،باید فایل level.dat رو ویرایش کنی.
در Bedrock Edition، میشه هر زمان از تب Cheats توی منوی تنظیمات، cheats رو روشن یا خاموش کرد. اما فعال کردن cheats توی یک دنیا باعث میشه بازیکنها برای همیشه دیگه نتونن توی همون دنیا اچیومنت باز کنن، حتی اگه بعداً cheats رو خاموش کنی. در Bedrock Dedicated Server هم میشه با دستور changesetting/ رو فعال یا غیرفعال کرد.
نوعهای آرگومان
رای آرگومانها توی دستورها، نوعهای مختلفی وجود داره. مختصات، target selector، SNBT، text component و موارد دیگه از قالبهایی هستن که معمولاً داخل آرگومانها استفاده میشن.
تجزیه و اجرا
اجرای دستور در سمت سرور به دو مرحله تقسیم میشه:تجزیهٔ دستور (command parsing) و اجرای دستور (command execution).در مرحلهٔ تجزیه،بازی تشخیص میده که متن واردشده یک دستوره یا نه و بررسی میکنه که دستور کامل هست یا نه و اینکه آرگومانها درست مشخص شدهاند یا نه.
در مرحلهٔ اجرا،دستور وظیفهٔ خودش رو انجام میده .وقتی دستور رو توی چت یا command block تایپ میکنی،دستور اول در سمت کلاینت هم تجزیه میشه تا تکمیل خودکار فراهم بشه و به بازیکن کمک کنه اشتباههای تایپی رو تشخیص بده.
موقع تایپ آرگومان در چت،اگه آرگومان نتونه در سمت کلاینت تجزیه بشه، این موضوع مشخص میشه.اما اینکه یه آرگومان در سمت کلاینت قابل تجزیه باشه،تضمین نمیکنه که در سمت سرور هم قابل تجزیه باشه.
در Java Edition، اگه یک آرگومان توسط کلاینت قابل تجزیه نباشه، اون آرگومان قرمز میشه و یک پیام خطای ساختاری (syntax error) بالای نوار چت نمایش داده میشه.
در Bedrock Edition، وقتی توی چت تایپ میکنی، اگه یک آرگومان در سمت کلاینت قابل تجزیه باشه، آرگومان بعدی در راهنمای ساختار دستور از خاکستری به سفید تغییر رنگ میده. اگه همهٔ آرگومانها (حتی آرگومانهای اختیاری) در سمت کلاینت وارد شده باشن و قابل تجزیه هم باشن، کل راهنمای ساختار دستور از سفید به خاکستری تغییر میکنه.
در Java Edition، تایپ کردن دستور داخل command block هم دقیقاً مثل همون حالتیه که توی چت گفته شد.
در Bedrock Edition، وقتی داخل command block دستور مینویسی، تکمیل خودکار وجود داره اما راهنمای ساختار دستور (syntax hint) نمایش داده نمیشه.
در Bedrock Edition، وقتی صفحهٔ command block رو میبندی، دستور در سمت سرور تجزیه میشه. اگه دستور در سمت سرور قابل تجزیه نباشه، یه پیام خطای ساختاری داخل output box کامند بلاک نمایش داده میشه.
وقتی سعی میکنی یک دستور غیرقابل تجزیه رو اجرا کنی، یک پیام خطا نمایش داده میشه.
- در Java Edition
- انتهای پیام علامت <--[HERE] دیده میشه.
- در Bedrock Edition
- پیام به شکل Unknown command یا Syntax error: unexpected ... at ... نمایش داده میشه.
دستورهایی که داخل فانکشنها هستن، همهشون موقع لود شدن فانکشن تجزیه میشن. اگه حتی یکی از دستورهای داخل فایل فانکشن قابل تجزیه نباشه، بازی اصلاً نمیتونه اون فانکشن رو بارگذاری کنه.
در Java Edition، خطهای ماکرو موقع تلاش برای اجرای فانکشن تجزیه میشن. در Bedrock Edition، اگه یه دستور داخل اسکریپت قابل تجزیه نباشه، موقع تلاش برای اجرای اون دستور یک خطا ایجاد میشه.
خروجی (Output)
بعد از تلاش برای اجرای یک دستور،ممکنه مقادیر خروجی برگردونده بشه؛از جمله success count و مقادیر ذخیرهشده (فقط Java Edition).
Success count مقداریه که دستوربه command block ای که اون رو اجرا کرده برمیگردونه .یک command block میتونه یک ردستون کامپراتور رو که رو به بیرون ازش قرار گرفته (حتی اگه بینشون یک بلاک فاصله باشه) فعال کنه، و قدرت سیگنال برابر با همون success count خواهد بود
.قدرت سیگنال،success count آخرین دستوری که اجرا شده رو نشون میده.حتی بعد از غیرفعال شدن command block، این مقدار حفظ میشه تا وقتی که دستور دوباره اجرا بشه.
در Bedrock Edition ،success count همچنین به اسکریپتی که دستور رو اجرا کرده برگردونده میشه.در Java Edition، دستورهایی که قابل اجرا داخل command block نیستن اصلاً success count ندارن.
در Bedrock Edition، دستورهایی که داخل command block یا اسکریپت قابل اجرا نیستن باز هم success count دارن، اما این مقدار قابل دریافت نیست. در Java Edition، success count همیشه ۰ یا ۱ هست، بهجز دستور execute/. در Bedrock Edition، success count یک عدد صحیح بین ۰ تا ۲٬۱۴۷٬۴۸۳٬۶۴۷ (شامل هر دو) هست و به نوع دستور بستگی داره؛ مثلاً تعداد بازیکنهایی که دستور روی اونها اثر گذاشته، یا تعداد بلاکهایی که تغییر داده شدهاند.
مقادیر ذخیرهشده (فقط Java Edition) شامل success value و result value هستن .این مقادیر،مقدارهایی هستن که وقتی یک دستور توسط دستورexecute/ اجرا میشه، از طرف دستورهای دیگه به execute/ منتقل میشن.
این دو مقدار رو میشه با استفاده از زیردستور store در دستور execute/ داخل یک محل مشخص ذخیره کرد.
success value همیشه ۰ یا ۱ هست. result value یک عدد صحیحه (اگه اعشاری باشه، به پایین گرد میشه). تقریباً همهٔ دستورها بعد از اجرا میتونن این دو مقدار ذخیرهشده رو تولید کنن، بهجز دو مورد: خود دستور execute/ این دو مقدار رو تولید نمیکنه. دستور function/ در بعضی شرایط ممکنه این دو مقدار رو تولید نکنه.
نتیجه (Result)
بعد از تلاش برای اجرای یک دستور، اون دستور یک نتیجهٔ مشخص داره. نتیجههای ممکن شامل اینها هستن:
- Unparseable (قابل تجزیه نیست)
- Failed (ناموفق)
- Successful (موفق)
- Void (فقط Java Edition)
- Terminated (فقط Java Edition)
- Error (فقط Java Edition)