use of com.cjm721.overloaded.storage.LongEnergyStack in project Overloaded by CJ-MC-Mods.
the class ItemEnergyShield method onItemUse.
@Override
@Nonnull
public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
if (!worldIn.isRemote) {
System.out.println("On Item Use");
IHyperHandlerEnergy handler = player.getHeldItem(hand).getCapability(HYPER_ENERGY_HANDLER, null);
LongEnergyStack energy = handler.take(new LongEnergyStack(constantUseCost), true);
if (energy.amount == constantUseCost) {
System.out.println("On Item Use Success");
return EnumActionResult.SUCCESS;
}
return EnumActionResult.FAIL;
}
return EnumActionResult.PASS;
}
use of com.cjm721.overloaded.storage.LongEnergyStack in project Overloaded by CJ-MC-Mods.
the class TileEnergyExtractor method update.
/**
* Like the old updateEntity(), except more generic.
*/
@Override
public void update() {
BlockPos me = this.getPos();
TileEntity frontTE = getWorld().getTileEntity(me.add(front.getDirectionVec()));
if (frontTE == null || !frontTE.hasCapability(HYPER_ENERGY_HANDLER, front.getOpposite()))
return;
IHyperHandlerEnergy storage = frontTE.getCapability(HYPER_ENERGY_HANDLER, front.getOpposite());
LongEnergyStack energy = storage.take(new LongEnergyStack(Long.MAX_VALUE), false);
for (EnumFacing facing : EnumFacing.values()) {
if (energy.getAmount() == 0L)
return;
if (facing == front)
continue;
TileEntity te = world.getTileEntity(me.add(facing.getDirectionVec()));
if (te == null || !te.hasCapability(ENERGY, facing.getOpposite()))
continue;
IEnergyStorage receiver = te.getCapability(ENERGY, facing.getOpposite());
if (!receiver.canReceive())
continue;
int acceptedAmount = receiver.receiveEnergy((int) Math.min(energy.getAmount(), Integer.MAX_VALUE), true);
if (acceptedAmount != 0) {
receiver.receiveEnergy(acceptedAmount, false);
energy = storage.take(new LongEnergyStack(acceptedAmount), true);
}
}
}
use of com.cjm721.overloaded.storage.LongEnergyStack in project Overloaded by CJ-MC-Mods.
the class BlockInfiniteCapacitor method onBlockActivated.
@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!worldIn.isRemote) {
ItemStack heldItem = playerIn.getHeldItem(hand);
if (heldItem.isEmpty() && hand == EnumHand.MAIN_HAND) {
LongEnergyStack stack = ((TileInfiniteCapacitor) worldIn.getTileEntity(pos)).getStorage().status();
// TODO Make the exact number show in a tooltip so it can be easier to read at a glance
double percent = (double) stack.getAmount() / (double) Long.MAX_VALUE;
playerIn.sendStatusMessage(new TextComponentString(String.format("Energy Amount: %,d %,.4f%%", stack.getAmount(), percent)), false);
return true;
}
}
return super.onBlockActivated(worldIn, pos, state, playerIn, hand, side, hitX, hitY, hitZ);
}
use of com.cjm721.overloaded.storage.LongEnergyStack in project Overloaded by CJ-MC-Mods.
the class LongEnergyStorage method take.
@Override
@Nonnull
public LongEnergyStack take(@Nonnull LongEnergyStack stack, boolean doAction) {
long newStoredAmount = Math.max(energy.amount - stack.amount, 0);
LongEnergyStack result = new LongEnergyStack(Math.min(energy.amount, stack.amount));
if (doAction)
energy.amount = newStoredAmount;
return result;
}
use of com.cjm721.overloaded.storage.LongEnergyStack in project Overloaded by CJ-MC-Mods.
the class ItemEnergyShield method onItemRightClick.
@Nonnull
@Override
public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, @Nonnull EnumHand handIn) {
ItemStack itemstack = playerIn.getHeldItem(handIn);
playerIn.setActiveHand(handIn);
IHyperHandlerEnergy handler = itemstack.getCapability(HYPER_ENERGY_HANDLER, null);
LongEnergyStack energy = handler.take(new LongEnergyStack(initialUseCost), true);
if (energy.amount == initialUseCost) {
System.out.println("Right click Success");
return new ActionResult<>(EnumActionResult.SUCCESS, itemstack);
} else {
System.out.println("Right click FAIL");
return new ActionResult<>(EnumActionResult.FAIL, itemstack);
}
}
Aggregations