Berikut adalah artikel yang Anda minta:
Menambahkan Slot ke Container di Minecraft GUI
Saya telah membuat sebuah Tile Entity menggunakan Minecraft Forge. Itu hanya sebatang chest dengan 81 slot (9 baris, 9 kolom). Secara dasarnya, saya perlu menciptakan koordinat x dan y. Setiap interval i, tambahkan SLOT_X_SPACING ke koordinat x, tapi reset ke 0 setelah 9 interval. Setiap 9 interval i, saya perlu menambahkan 18 ke SLOT_Y_SPACING.
Bagaimana cara saya dapat mengorganisasikan For loop ini menjadi hanya satu loop?
Kode berikut adalah kode class ModDrawerContainer yang terdiri dari beberapa bagian:
public class ModDrawerContainer extends Container {
// ... (saya tidak menulis seluruh kode, hanya bagian penting)
public ModDrawerContainer(InventoryPlayer invPlayer, ModTileEntityDrawer tileEntityInventoryBasic) {
// ...
for (int x = 0; x < HOTBAR_SLOT_COUNT; x++) {
// ...
}
final int PLAYER_INVENTORY_XPOS = 8;
final int PLAYER_INVENTORY_YPOS = 8;
for (int i = 0; i < 81; i++) {
int slotNumber = i;
// ... (saya tidak menulis seluruh kode, hanya bagian penting)
}
}
// ...
}
Seperti yang Anda lihat, terdapat beberapa loop For yang digunakan untuk mengisi slot-slot di inventory. Namun, jika kita ingin membuatnya lebih rapi dan efisien, kita dapat mengorganisasikan code tersebut menjadi hanya satu loop.
Berikut adalah kode modifikasi:
public class ModDrawerContainer extends Container {
// ... (saya tidak menulis seluruh kode, hanya bagian penting)
public ModDrawerContainer(InventoryPlayer invPlayer, ModTileEntityDrawer tileEntityInventoryBasic) {
// ...
int yPos = 8;
for (int i = 0; i < 9; i++) {
int xPos = 8;
for (int j = 0; j < 9; j++) {
int slotNumber = i * 9 + j;
// ... (saya tidak menulis seluruh kode, hanya bagian penting)
yPos += 18;
}
}
}
// ...
}
Dalam modifikasi di atas, saya menggunakan dua loop For yang berbeda untuk mengisi slot-slot di inventory. Loop pertama digunakan untuk menghitung baris, sedangkan loop kedua digunakan untuk menghitung kolom. Dengan demikian, kita dapat membuat code lebih rapi dan efisien.
Namun, perlu diingat bahwa modifikasi di atas hanya contoh, dan Anda perlu memastikan bahwa kode tersebut sesuai dengan kebutuhan Anda dan tidak memiliki bug lainnya.