دقیقاً چه کاری باید انجام شود؟
عنوان پروژه
افزودن سیستم انتخاب، کپی، پیست، حذف، Undo و Redo بلاکهای متصل به پلاگین Minecraft
توضیحات پروژه
من یک پلاگین اختصاصی برای Minecraft Paper 1.21.8 دارم و میخواهم یک قابلیت جدید به آن اضافه شود.
ساختار اولیه پروژه آماده است و یک package با نام connectedblocks داخل package اصلی پلاگین ایجاد کردهام.
ترجیح میدهم فایلهای مربوط به این قابلیت تا حد امکان داخل همین package قرار بگیرند و سیستم بهصورت مستقل و مرتب پیادهسازی شود.
قابلیت انتخاب
میخواهم یک سیستم انتخاب بلاکهای متصل ساخته شود.
برای مثال، یک درخت را در نظر بگیرید که در هوا قرار دارد و به هیچ سازه دیگری متصل نیست.
بازیکن یک Stick مخصوص دارد و با راستکلیک روی یکی از بلاکهای درخت، پلاگین باید تمام بلاکهای متصل به آن بلاک را پیدا و انتخاب کند.
پس از انتخاب، باید مشخص باشد که دقیقاً چه بلاکهایی انتخاب شدهاند؛ مثلاً با نمایش مناسب محدوده یا خود بلاکهای انتخابشده.
عملیات موردنیاز
پس از انتخاب مجموعه، این قابلیتها لازم است:
- Copy — کپی کردن مجموعه انتخابشده
- Paste — قرار دادن کپی در محل جدید
- Delete — حذف مجموعه انتخابشده
- Undo — برگرداندن آخرین عملیات
- Redo — انجام مجدد عملیاتی که Undo شده است
Undo و Redo باید حداقل برای عملیات Delete و Paste بهدرستی کار کنند.
برای مثال:
انتخاب درخت
↓
Copy
↓
Paste
↓
Undo → درخت Paste شده حذف شود
↓
Redo → دوباره Paste شود
و:
انتخاب درخت
↓
Delete
↓
Undo → درخت به حالت قبل برگردد
حفظ اطلاعات بلاکها
در Copy/Paste و همچنین Undo/Redo باید اطلاعات لازم بلاکها حفظ شود، از جمله:
- نوع بلاک
- BlockData
- جهت و حالتهای مربوط به بلاک در صورت وجود
نکات فنی
- نسخه سرور: Paper 1.21.8
- زبان: Java
- سیستم باید تا حد امکان مستقل از سایر بخشهای پلاگین باشد.
- فایلهای مربوط به این قابلیت ترجیحاً داخل package
connectedblocksقرار بگیرند. - کد باید تمیز، قابل نگهداری و قابل توسعه باشد.
- از ایجاد قابلیتهای اضافی که در Scope پروژه ذکر نشدهاند خودداری شود.
لطفاً در پیشنهاد خود ذکر کنید:
قیمت انجام کامل پروژه 2.
مدت زمان تقریبی انجام 3.
تجربه و نمونهکار در توسعه پلاگینهای Paper/Spigot 4.
روش پیشنهادی برای تشخیص بلاکهای متصل 5.
روش پیشنهادی برای نمایش Selection 6.
نحوه پیادهسازی Undo/Redo 7.
اینکه آیا برای اتصال این قابلیت به ساختار فعلی پلاگین نیاز به تغییر مهمی وجود دارد یا خیر
راستی فعلا سورس کد رو در اختیارتون نمیزارم و هر وقت که مشخص شد چه شخصی پروژه رو انجام میده بعد سورس کد رو به اون شخص میدهم