Minecraftforge: IResultFactory أو مصانع الوصفات القابلة للتمديد

تم إنشاؤها على ٢٠ أغسطس ٢٠١٧  ·  3تعليقات  ·  مصدر: MinecraftForge/MinecraftForge

في الوقت الحالي ، يبدو أن الطريقة الوحيدة لتحديد نتيجة مخصصة هي إما إنشاء ملف واحد لكل خيار ووضع شروط استبعاد في كل خيار ، أو إنشاء مصنع الوصفات الخاص بك. تكمن مشكلة مصنع الوصفات في أن المصانع الحالية يتم تعريفها إما على أنها لامدا أو طرق ، وبالتالي فهي غير قابلة للتمديد (مما يعني أنه سيتعين عليك نسخ الكود بالكامل حتى لو كان كل ما تريد تغييره هو كيفية تحليل النتيجة).

قد يكون الحل السهل هو نقلها إلى فئة قابلة للتمديد مع protected parseResult(JsonObject json, JsonContext context) يمكن للموديلين تجاوز فئة فرعية. ربما يكون الحل الأكثر نظافة هو توفير IResultFactory الذي يعمل بشكل مشابه لجميع المصانع الأخرى.

بالنسبة لحالة الاستخدام الخاصة بي: يدعم وضع Ex Compressum الخاص بي عدة متغيرات Ex Nihilo في نفس الوقت ، مما يعني أن بعض الوصفات يجب أن تعدل تلقائيًا بناءً على المتغير المستخدم. ستعمل الملفات المتعددة مع forge:mod_loaded لكل منها ، لكنها لن تكون أنيقة للغاية وستستبعد إمكانية تعديل إضافة الدعم من جانبهم. يمكن أن تكون حالة الاستخدام الأخرى هي الوصفات التي يتم ضبطها بناءً على التكوينات أو العوامل الخارجية الأخرى.

مصنع وصفة نموذج بالحجم الطبيعي باستخدام الحل 1 (مصانع الوصفات الافتراضية القابلة للتمديد):

public class NihiloRecipeFactory extends ShapelessOreRecipe {
    <strong i="12">@Override</strong>
    public ItemStack parseResult(JsonObject json, JsonContext context) {
        return ExNihiloProvider.getNihiloItem(json.get("value").getAsString());
    }
}

وصفة بالحجم الطبيعي باستخدام الحل 2 (IResultFactory):

{
  "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"
    }
  ]
}

يمكنني العلاقات العامة لأي من الحلين بمجرد أن أعرف أيهما سيكون مفضلًا.

Stale

التعليق الأكثر فائدة

أنا أصوت لصالح IResultFactory

ال 3 كومينتر

أنا أصوت لصالح IResultFactory

تم وضع علامة على هذه المشكلة تلقائيًا على أنها قديمة لأنه لم يكن لها نشاط منذ وقت طويل. إذا كانت هذه المشكلة لا تزال ذات صلة ويجب أن تظل مفتوحة ، فالرجاء الرد بشرح موجز (على سبيل المثال ، "لقد تحققت من الرمز وما زالت هذه المشكلة ذات صلة لأن ___." أو "هذه لقطة شاشة لهذه المشكلة في الإصدار الأخير"). شكرا لمساهماتكم!

تم إغلاق هذه المشكلة تلقائيًا نظرًا لعدم وجود نشاط لها منذ فترة طويلة. لا تتردد في إعادة فتحه أو إنشاء عدد جديد.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات