const $BasicStorageCell = Java.loadClass("appeng.items.storage.BasicStorageCell")
const $StorageComponentItem = Java.loadClass("appeng.items.materials.StorageComponentItem")
const $AEItems = Java.loadClass("appeng.core.definitions.AEItems")
const $AEKeyType = Java.loadClass("appeng.api.stacks.AEKeyType")
const $Item = Java.loadClass("net.minecraft.world.item.Item");
const namespace = "meng:";
let AECellComponentItems = {
}
/**
* 注册存储元件和对应的组件
* @param {Number} byte 最大内存 kb
* @param {Number} maxItemTypeCount 最大物品类型属性 1~63
* @param {Number} AE2Energy 消耗的ae能
* @param {Number} bytesPer 每一个新物品开辟所需的空间byte
*/
function regCellComponent(byte,maxItemTypeCount,AE2Energy,bytesPer){
let cellComponentId = `${namespace}cell_component_${byte}k`
let storageCellId = `${namespace}item_storage_cell_${byte}k`
AECellComponentItems[byte] = {
byte:byte,
cellComponent: cellComponentId,
storageCell:storageCellId,
maxItemTypeCount:maxItemTypeCount,
AE2Energy:AE2Energy,
bytesPer:bytesPer
}
}
regCellComponent(512,63,3.0,4096)
regCellComponent(1024,63,4.0,4096)
regCellComponent(2048,63,5.0,4096)
regCellComponent(4096,63,6.0,4096)
regCellComponent(8192,63,7.0,4096)
StartupEvents.registry("item", event => {
for (const key in AECellComponentItems) {
let aeValue = AECellComponentItems[key];
event.createCustom(aeValue.cellComponent,
()=>new $StorageComponentItem($Item.Properties().stacksTo(1), aeValue.byte))
event.createCustom(aeValue.storageCell,
()=>new $BasicStorageCell(
$Item.Properties().stacksTo(1),
Item.of(aeValue.cellComponent),
$AEItems.ITEM_CELL_HOUSING,
aeValue.AE2Energy,
aeValue.byte,
aeValue.bytesPer,
aeValue.maxItemTypeCount,
$AEKeyType.items()
)
)
}
})
regCellComponent(512,63,3.0,4096)