public void tick() {
            clock++;
            removeLosses();

            draw = (draw * 49.0 + lastTickDraw) / 50.0;
            lastTickDraw = 0.0;

            if (drewFromTrack > 0)
                drewFromTrack--;
            else if (type == Type.USER && charge < (capacity / 2.0) && clock % DRAW_INTERVAL == 0) {
                ILinkageManager lm = CartTools.getLinkageManager(minecart.worldObj);
                for (EntityMinecart cart : lm.getCartsInTrain(minecart)) {
                    if (cart instanceof IElectricMinecart) {
                        ChargeHandler ch = ((IElectricMinecart) cart).getChargeHandler();
                        if (ch.getType() != Type.USER && ch.getCharge() > 0) {
                            charge += ch.removeCharge(capacity - charge);
                            break;
                        }
                    }
                }
            }
        }