Minecraftforge: IResultFactory atau pabrik resep yang dapat diperpanjang

Dibuat pada 20 Agu 2017  ·  3Komentar  ·  Sumber: MinecraftForge/MinecraftForge

Saat ini sepertinya satu-satunya cara untuk menentukan hasil khusus adalah membuat satu file untuk setiap opsi dan menempatkan kondisi pengecualian di masing-masing, atau membuat pabrik resep Anda sendiri. Masalah dengan pabrik resep adalah bahwa pabrik yang ada didefinisikan sebagai lambda atau metode, dan karena itu tidak dapat diperpanjang (artinya Anda harus menduplikasi seluruh kode bahkan jika semua yang ingin Anda ubah adalah bagaimana hasilnya diuraikan).

Solusi mudah adalah memindahkannya ke kelas yang dapat diperpanjang dengan protected parseResult(JsonObject json, JsonContext context) yang dapat ditimpa oleh modders dalam subkelas. Solusi yang mungkin lebih bersih adalah dengan menyediakan IResultFactory yang bekerja mirip dengan semua pabrik lainnya.

Adapun kasus penggunaan saya: mod Ex Compressum saya mendukung beberapa varian Ex Nihilo secara bersamaan, yang berarti beberapa resep harus secara otomatis menyesuaikan berdasarkan varian apa yang digunakan. Beberapa file dengan forge:mod_loaded masing-masing akan berfungsi, tetapi tidak akan terlalu elegan dan akan mengecualikan kemungkinan mod menambahkan dukungan dari pihak mereka. Kasus penggunaan lainnya adalah resep yang menyesuaikan berdasarkan konfigurasi atau faktor eksternal lainnya.

Pabrik resep mockup menggunakan Solusi 1 (pabrik resep default yang dapat diperpanjang):

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

Resep mockup menggunakan Solusi 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"
    }
  ]
}

Saya bisa PR salah satu solusi setelah saya tahu mana yang lebih disukai.

Stale

Komentar yang paling membantu

saya memilih IResultFactory

Semua 3 komentar

saya memilih IResultFactory

Masalah ini secara otomatis ditandai sebagai basi karena sudah lama tidak ada aktivitas. Jika masalah ini masih relevan dan harus tetap terbuka, harap balas dengan penjelasan singkat (misalnya "Saya telah memeriksa kode dan masalah ini masih relevan karena ___." atau "Berikut adalah tangkapan layar masalah ini pada versi terbaru"). Terima kasih atas kontribusi Anda!

Masalah ini telah ditutup secara otomatis karena sudah lama tidak ada aktivitas. Silakan buka kembali atau buat masalah baru.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat