- 236
- 4
- 22
Доброй ночи, форумчане. Есть такой вопрос, касательно API Ic2, а именно его энерго-сетей. Как я понял, чтобы мой TileEntity работал с EU, я должен реализовывать IEnergySink (для приёмников энергии) и IEnergySource (для провайдеров/генераторов) и постить спец. ивенты при загрузке тайла и выгрузке. По началу были вопросы, как мне сделать лимит на вход энергии/тик и также для выхода. Вроде бы это я смог разобрать:
Но 2 вопроса я так и не смог решить:
1. Метод injectEnergy, вызываемый при получении энергии из энергосетей ic2 в мой тайл передаёт параметр "voltage". По началу я надеялся, что там будет "степень" напряжённости (например 1 - 16Eu/T, 2 - 64Eu/T, 3 - 256Eu/T и т.д. умножая на 4), однако сколько я не дебагал это - voltage всегда == amount. Как мне тогда узнать каково реальное напряжение на машину идёт? Просто хочу реализовать взрывы моих машин от большого напряжения (как в ic2 classic 1.5.2)
2. IEnergySink и IEnergySource имеют геттеры каких-то "уровней": getSinkTier() и getSourceTier(), однако какое бы я туда число не передал - никаких эффектов в игре не вижу я. Что туда передавать нужно!? API под 1.7.10 на github я не видел, только под более высокие версии - там уже интерфейсы чуть-чуть отличаются.
По этому решил спросить про эти вопросы здесь. Думаю, кто-то по любому хоть раз работал тут с Ic2 энергией и сможет мне помочь ответить на эти 2 вопроса. Заранее прошу, не надо писать, что Ic2 устарелое API - переходи на CoFH. Ибо на деле, я просто делаю в своём моде поддержку и RF и EU одновременно. Ic2 хоть и "старый", но очень мало серверов, где бы его не было. По этому за это помидорки не швырять. (Спасибо)
Вход с лимитом:
@Override
public double getDemandedEnergy()
{
return Math.max(0, Math.min(this.getMaxEnergy() - this.getEnergy(), this.getMaxInput()));
}
@Override
public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage)
{
double received = Math.max(0, Math.min(amount, this.getDemandedEnergy()));
this.addEnergy(received);
return amount - received;
}
Отдача с лимитом:
@Override
public double getOfferedEnergy()
{
return this.getEnergy() > 0 ? Math.min(this.getEnergy(), this.getMaxOutput()) : 0.0D;
}
@Override
public void drawEnergy(double amount)
{
this.setEnergy(this.getEnergy() - amount);
}
Но 2 вопроса я так и не смог решить:
1. Метод injectEnergy, вызываемый при получении энергии из энергосетей ic2 в мой тайл передаёт параметр "voltage". По началу я надеялся, что там будет "степень" напряжённости (например 1 - 16Eu/T, 2 - 64Eu/T, 3 - 256Eu/T и т.д. умножая на 4), однако сколько я не дебагал это - voltage всегда == amount. Как мне тогда узнать каково реальное напряжение на машину идёт? Просто хочу реализовать взрывы моих машин от большого напряжения (как в ic2 classic 1.5.2)
2. IEnergySink и IEnergySource имеют геттеры каких-то "уровней": getSinkTier() и getSourceTier(), однако какое бы я туда число не передал - никаких эффектов в игре не вижу я. Что туда передавать нужно!? API под 1.7.10 на github я не видел, только под более высокие версии - там уже интерфейсы чуть-чуть отличаются.
По этому решил спросить про эти вопросы здесь. Думаю, кто-то по любому хоть раз работал тут с Ic2 энергией и сможет мне помочь ответить на эти 2 вопроса. Заранее прошу, не надо писать, что Ic2 устарелое API - переходи на CoFH. Ибо на деле, я просто делаю в своём моде поддержку и RF и EU одновременно. Ic2 хоть и "старый", но очень мало серверов, где бы его не было. По этому за это помидорки не швырять. (Спасибо)