PaperMC یک پایه ساده برای گسترش سمت سرور ماینکرفت با افزونههای کوچک فراهم میکند، بدون اینکه نیاز باشد کلاینتها چیزی نصب کنند. هنگام توسعه افزونهها، این سوال مطرح میشود که چگونه اطلاعات پویا را به بازیکن نمایش دهیم. پاسخ در یک ویژگی معمولی که اغلب نادیده گرفته میشود نهفته است: نوار رئیس . در ابتدا برای رئیسهای پایانی در نظر گرفته شده بود، نوار رئیس میتواند تغییر کاربری داده و به عنوان یک HUD مینیمالیستی استفاده شود.
به جای توضیح اعداد، میتوانید با وضعیتهای مختصری کار کنید که فقط یک احساس را منتقل میکنند. این اغلب تأثیر قویتری نسبت به یک تابلوی امتیازات دیگر یا پیامهای چت دارد. رابط برنامهنویسی Bossbar به طرز شگفتآوری قدرتمند است: رنگ، سبک و پیشرفت را میتوان به صورت پویا تغییر داد. برخلاف تابلوهای امتیازات، Bossbar به طور نامحسوس در بالای صفحه باقی میماند.
BossBar bar = Bukkit.createBossBar("", BarColor.BLUE, BarStyle.SOLID);
bar.addPlayer(player);
مثال ۱: نمایش دما: مقدار سانتیگراد در محدوده ۰ تا ۱ نرمالسازی میشود و رنگ بر این اساس انتخاب میشود: آبی برای سرما، سبز برای دلپذیری و قرمز برای گرما.:
bar.setTitle(String.format("🌡 %.0f°C", celsius));
bar.setProgress((celsius + 20) / 60.0);
bar.setColor(celsius < 10 ? BarColor.BLUE : celsius < 30 ? BarColor.GREEN : BarColor.RED);
مثال ۲: اکسیژن زیر آب: نمایشگر قطعهبندیشده برای مقادیر گسسته مانند تنفس کاملاً مناسب است. SEGMENTED_10 شما ده واحد قابل مشاهده دارید:
bar.setTitle("💨 Sauerstoff");
bar.setStyle(BarStyle.SEGMENTED_10);
bar.setProgress(player.getRemainingAir() / 300.0);
مثال ۳: نوار ترس ضرباندار: یک موج سینوسی باعث میشود که پیشرفت به صورت ریتمیک نوسان کند. در یک BukkitRunnable این یک اثر پر جنب و جوش ایجاد می کند.:
double pulse = 0.5 + 0.5 * Math.sin(phase);
bar.setProgress(fearLevel * pulse);
bar.setTitle(fearLevel > 0.7 ? "💀 GEFAHR" : "👁 Unruhe");
شما میتوانید تا پنج نوار رئیس را به طور همزمان روی هم قرار دهید و سیستمهای پیچیده HUD را فعال کنید. برای اینکه یک نوار تقریباً نامرئی شود، پیشرفت را روی ... تنظیم میکنید. 0.0001 – عنوان بازی قابل مشاهده باقی میماند، اما نوار پیشرفت ناپدید میشود. بنابراین، نوار رئیس ابزاری دست کم گرفته شده برای مکانیکهای بازی با اتمسفر خاص است. به خصوص در بازیهای ترسناک یا بقا، میتوان از آن برای پیشنهاد موقعیتها بدون آشکار کردن اعداد و ارقام قطعی برای بازیکن استفاده کرد.
برای پیادهسازی کارآمد چنین مکانیکهایی، توصیه میکنم از قالب کوچک من استفاده کنید که ساختار افزونه را تعریف میکند. علاوه بر پیکربندی Gradle، مخزن همچنین شامل اسکریپتهای ساخت برای محیطهای محلی و تولیدی و همچنین نمونههایی از سلاحهای سفارشی و بستههای منابع است. این به شما امکان میدهد تا به سرعت ایدههای جدید HUD را امتحان کنید زیرا لازم نیست هر بار با بستهبندی، راهاندازی سرور و جزئیات استقرار سر و کار داشته باشید.