في الوقت الحالي ، يبدو أن الطريقة الوحيدة لتحديد نتيجة مخصصة هي إما إنشاء ملف واحد لكل خيار ووضع شروط استبعاد في كل خيار ، أو إنشاء مصنع الوصفات الخاص بك. تكمن مشكلة مصنع الوصفات في أن المصانع الحالية يتم تعريفها إما على أنها لامدا أو طرق ، وبالتالي فهي غير قابلة للتمديد (مما يعني أنه سيتعين عليك نسخ الكود بالكامل حتى لو كان كل ما تريد تغييره هو كيفية تحليل النتيجة).
قد يكون الحل السهل هو نقلها إلى فئة قابلة للتمديد مع protected parseResult(JsonObject json, JsonContext context)
يمكن للموديلين تجاوز فئة فرعية. ربما يكون الحل الأكثر نظافة هو توفير IResultFactory
الذي يعمل بشكل مشابه لجميع المصانع الأخرى.
بالنسبة لحالة الاستخدام الخاصة بي: يدعم وضع Ex Compressum الخاص بي عدة متغيرات Ex Nihilo في نفس الوقت ، مما يعني أن بعض الوصفات يجب أن تعدل تلقائيًا بناءً على المتغير المستخدم. ستعمل الملفات المتعددة مع forge:mod_loaded
لكل منها ، لكنها لن تكون أنيقة للغاية وستستبعد إمكانية تعديل إضافة الدعم من جانبهم. يمكن أن تكون حالة الاستخدام الأخرى هي الوصفات التي يتم ضبطها بناءً على التكوينات أو العوامل الخارجية الأخرى.
public class NihiloRecipeFactory extends ShapelessOreRecipe {
<strong i="12">@Override</strong>
public ItemStack parseResult(JsonObject json, JsonContext context) {
return ExNihiloProvider.getNihiloItem(json.get("value").getAsString());
}
}
{
"type": "forge:ore_shapeless",
"result": {
"type": "excompressum:nihilo_result_item",
"value": "DUST",
"count": 9
},
"ingredients": [
{
"item": "excompressum:compressed_block",
"data": 0
}
],
"conditions": [
{
"type": "excompressum:has_nihilo_item",
"value": "DUST"
}
]
}
يمكنني العلاقات العامة لأي من الحلين بمجرد أن أعرف أيهما سيكون مفضلًا.
أنا أصوت لصالح IResultFactory
تم وضع علامة على هذه المشكلة تلقائيًا على أنها قديمة لأنه لم يكن لها نشاط منذ وقت طويل. إذا كانت هذه المشكلة لا تزال ذات صلة ويجب أن تظل مفتوحة ، فالرجاء الرد بشرح موجز (على سبيل المثال ، "لقد تحققت من الرمز وما زالت هذه المشكلة ذات صلة لأن ___." أو "هذه لقطة شاشة لهذه المشكلة في الإصدار الأخير"). شكرا لمساهماتكم!
تم إغلاق هذه المشكلة تلقائيًا نظرًا لعدم وجود نشاط لها منذ فترة طويلة. لا تتردد في إعادة فتحه أو إنشاء عدد جديد.
التعليق الأكثر فائدة
أنا أصوت لصالح IResultFactory