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.
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"
}
]
}
Saya bisa PR salah satu solusi setelah saya tahu mana yang lebih disukai.
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.
Komentar yang paling membantu
saya memilih IResultFactory