mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
71 lines
1.9 KiB
Java
71 lines
1.9 KiB
Java
package com.hbm.entity.train;
|
|
|
|
import com.hbm.items.ModItems;
|
|
|
|
import api.hbm.energymk2.IBatteryItem;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.world.World;
|
|
|
|
public abstract class EntityRailCarElectric extends EntityRailCarRidable {
|
|
|
|
public EntityRailCarElectric(World world) {
|
|
super(world);
|
|
}
|
|
|
|
public abstract int getMaxPower();
|
|
public abstract int getPowerConsumption();
|
|
|
|
public boolean hasChargeSlot() { return false; }
|
|
public int getChargeSlot() { return 0; }
|
|
|
|
@Override protected void entityInit() {
|
|
super.entityInit();
|
|
this.dataWatcher.addObject(3, new Integer(0));
|
|
}
|
|
|
|
@Override public boolean canAccelerate() {
|
|
return true;
|
|
//return this.getPower() >= this.getPowerConsumption();
|
|
}
|
|
|
|
@Override public void consumeFuel() {
|
|
//this.setPower(this.getPower() - this.getPowerConsumption());
|
|
}
|
|
|
|
public void setPower(int power) {
|
|
this.dataWatcher.updateObject(3, power);
|
|
}
|
|
|
|
public int getPower() {
|
|
return this.dataWatcher.getWatchableObjectInt(3);
|
|
}
|
|
|
|
@Override
|
|
public void onUpdate() {
|
|
super.onUpdate();
|
|
|
|
if(!worldObj.isRemote) {
|
|
|
|
if(this.hasChargeSlot()) {
|
|
ItemStack stack = this.getStackInSlot(this.getChargeSlot());
|
|
|
|
if(stack != null && stack.getItem() instanceof IBatteryItem) {
|
|
IBatteryItem battery = (IBatteryItem) stack.getItem();
|
|
int powerNeeded = this.getMaxPower() - this.getPower();
|
|
long powerProvided = Math.min(battery.getDischargeRate(), battery.getCharge(stack));
|
|
int powerTransfered = (int) Math.min(powerNeeded, powerProvided);
|
|
|
|
if(powerTransfered > 0) {
|
|
battery.dischargeBattery(stack, powerTransfered);
|
|
this.setPower(this.getPower() + powerTransfered);
|
|
}
|
|
} else if(stack != null) {
|
|
if(stack.getItem() == ModItems.battery_creative || stack.getItem() == ModItems.fusion_core_infinite) {
|
|
this.setPower(this.getMaxPower());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|